p_table <- function(tab_data, ...) {
tab_data_2 <- deparse(substitute(tab_data))
table_p <- do.call(CreateTableOne,
list(data = as.name(tab_data_2), includeNA = TRUE, ...))
table_p_out <- print(table_p,
showAllLevels = TRUE,
printToggle = FALSE)
kable(table_p_out,
align = "c")
}
uni_var <- function(test_var, data_imp) {
cat("_________________________________________________")
cat("\n")
cat(" \n##", test_var)
cat("\n")
cat("_________________________________________________")
cat("\n")
f <- as.formula(paste("Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)",
as.name(test_var),
sep = " ~ " ))
data_imp_2 <- deparse(substitute(data_imp))
km_fit <- do.call("survfit", list(formula = f, data = as.name(data_imp_2)))
print(km_fit)
cat("\n")
print(summary(km_fit, times = c(12, 24, 36, 48, 60, 120)))
cat("\n")
cat("\n")
cat("\n")
cat(" \n## Univariable Cox Proportional Hazard Model for: ", test_var)
cat("\n")
cat("\n")
n_levels <- nlevels(data_imp[[test_var]])
if(n_levels == 1){
print("Only one level, no Cox model performed")
cat("\n")
} else {
cox_fit <- do.call("coxph", list(formula = f, data = as.name(data_imp_2)))
print(summary(cox_fit))
cat("\n")
do.call("ggforest",
list(model = cox_fit, data = as.name(data_imp_2)))
}
cat("\n")
cat("\n")
cat("\n")
cat(" \n## Unadjusted Kaplan Meier Overall Survival Curve for: ", test_var)
p <- do.call("ggsurvplot",
list(fit = km_fit, data = as.name(data_imp_2),
palette = "jco", censor = FALSE, legend = "right",
linetype = "strata", xlab = "Time (Months)"))
print(p)
}
col.width <- c(37, 10, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 1, 4, 1, 1,
1, 3, 2, 2, 8, 2, 5, 5, 5, 4, 5, 5, 5,4, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 8,
8, 8, 2, 1, 1, 1, 1, 8, 1, 1, 8, 1, 1, 2, 2, 5, 2, 5, 3, 1, 3, 1, 8, 8, 2, 8,
2, 8, 2, 2, 1, 8, 1, 1, 1, 1, 1, 8, 1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1)
col.names.abr <- c("PUF_CASE_ID", "PUF_FACILITY_ID", "FACILITY_TYPE_CD", "FACILITY_LOCATION_CD",
"AGE", "SEX", "RACE", "SPANISH_HISPANIC_ORIGIN", "INSURANCE_STATUS",
"MED_INC_QUAR_00", "NO_HSD_QUAR_00", "UR_CD_03", "MED_INC_QUAR_12", "NO_HSD_QUAR_12",
"UR_CD_13", "CROWFLY", "CDCC_TOTAL_BEST", "SEQUENCE_NUMBER", "CLASS_OF_CASE",
"YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "LATERALITY", "HISTOLOGY", "BEHAVIOR", "GRADE",
"DIAGNOSTIC_CONFIRMATION", "TUMOR_SIZE", "REGIONAL_NODES_POSITIVE",
"REGIONAL_NODES_EXAMINED", "DX_STAGING_PROC_DAYS", "RX_SUMM_DXSTG_PROC", "TNM_CLIN_T",
"TNM_CLIN_N", "TNM_CLIN_M", "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
"TNM_PATH_STAGE_GROUP", "TNM_EDITION_NUMBER", "ANALYTIC_STAGE_GROUP", "CS_METS_AT_DX",
"CS_METS_EVAL", "CS_EXTENSION", "CS_TUMOR_SIZEEXT_EVAL", "CS_METS_DX_BONE", "CS_METS_DX_BRAIN",
"CS_METS_DX_LIVER", "CS_METS_DX_LUNG", "LYMPH_VASCULAR_INVASION", "CS_SITESPECIFIC_FACTOR_1",
"CS_SITESPECIFIC_FACTOR_2", "CS_SITESPECIFIC_FACTOR_3", "CS_SITESPECIFIC_FACTOR_4",
"CS_SITESPECIFIC_FACTOR_5", "CS_SITESPECIFIC_FACTOR_6", "CS_SITESPECIFIC_FACTOR_7",
"CS_SITESPECIFIC_FACTOR_8", "CS_SITESPECIFIC_FACTOR_9", "CS_SITESPECIFIC_FACTOR_10",
"CS_SITESPECIFIC_FACTOR_11", "CS_SITESPECIFIC_FACTOR_12", "CS_SITESPECIFIC_FACTOR_13",
"CS_SITESPECIFIC_FACTOR_14", "CS_SITESPECIFIC_FACTOR_15", "CS_SITESPECIFIC_FACTOR_16",
"CS_SITESPECIFIC_FACTOR_17", "CS_SITESPECIFIC_FACTOR_18", "CS_SITESPECIFIC_FACTOR_19",
"CS_SITESPECIFIC_FACTOR_20", "CS_SITESPECIFIC_FACTOR_21", "CS_SITESPECIFIC_FACTOR_22",
"CS_SITESPECIFIC_FACTOR_23", "CS_SITESPECIFIC_FACTOR_24", "CS_SITESPECIFIC_FACTOR_25",
"CS_VERSION_LATEST", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS", "DX_DEFSURG_STARTED_DAYS",
"RX_SUMM_SURG_PRIM_SITE", "RX_HOSP_SURG_APPR_2010", "RX_SUMM_SURGICAL_MARGINS",
"RX_SUMM_SCOPE_REG_LN_SUR", "RX_SUMM_SURG_OTH_REGDIS", "SURG_DISCHARGE_DAYS", "READM_HOSP_30_DAYS",
"REASON_FOR_NO_SURGERY", "DX_RAD_STARTED_DAYS", "RX_SUMM_RADIATION", "RAD_LOCATION_OF_RX",
"RAD_TREAT_VOL", "RAD_REGIONAL_RX_MODALITY", "RAD_REGIONAL_DOSE_CGY", "RAD_BOOST_RX_MODALITY",
"RAD_BOOST_DOSE_CGY", "RAD_NUM_TREAT_VOL", "RX_SUMM_SURGRAD_SEQ", "RAD_ELAPSED_RX_DAYS",
"REASON_FOR_NO_RADIATION", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", "RX_SUMM_CHEMO",
"DX_HORMONE_STARTED_DAYS", "RX_SUMM_HORMONE", "DX_IMMUNO_STARTED_DAYS", "RX_SUMM_IMMUNOTHERAPY",
"RX_SUMM_TRNSPLNT_ENDO", "RX_SUMM_SYSTEMIC_SUR_SEQ", "DX_OTHER_STARTED_DAYS", "RX_SUMM_OTHER",
"PALLIATIVE_CARE", "RX_SUMM_TREATMENT_STATUS", "PUF_30_DAY_MORT_CD", "PUF_90_DAY_MORT_CD",
"DX_LASTCONTACT_DEATH_MONTHS", "PUF_VITAL_STATUS", "RX_HOSP_SURG_PRIM_SITE", "RX_HOSP_CHEMO",
"RX_HOSP_IMMUNOTHERAPY", "RX_HOSP_HORMONE", "RX_HOSP_OTHER", "PUF_MULT_SOURCE", "REFERENCE_DATE_FLAG",
"RX_SUMM_SCOPE_REG_LN_2012", "RX_HOSP_DXSTG_PROC", "PALLIATIVE_CARE_HOSP", "TUMOR_SIZE_SUMMARY",
"METS_AT_DX_OTHER", "METS_AT_DX_DISTANT_LN", "METS_AT_DX_BONE", "METS_AT_DX_BRAIN",
"METS_AT_DX_LIVER", "METS_AT_DX_LUNG", "NO_HSD_QUAR_16", "MED_INC_QUAR_16", "MEDICAID_EXPN_CODE")
#Read in data for each subsite
lip <- read_fwf('NCDBPUF_Lip.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
melanoma <- read_fwf('NCDBPUF_Melanoma.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
skin <- read_fwf('NCDBPUF_OtSkin.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgextr <- read_fwf('NCDBPUF_HodgExtr.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgndal <- read_fwf('NCDBPUF_HodgNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
NHLndal <- read_fwf('NCDBPUF_NHLNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
NHLextr <- read_fwf('NCDBPUF_NHLExtr.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
breast <- read_fwf('NCDBPUF_Breast.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vulva <- read_fwf('NCDBPUF_Vulva.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vagina <- read_fwf('NCDBPUF_Vagina.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
penis <- read_fwf('NCDBPUF_Penis.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
otleuk <- read_fwf('NCDBPUF_OtLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
otheracuteleuk <- read_fwf('NCDBPUF_OtAcLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
ALL <- read_fwf('NCDBPUF_ALymLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
#Combine data for all subsites
dat <- bind_rows(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast,
vulva, vagina, penis, NHLextr, otleuk, otheracuteleuk, ALL)
rm(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, vulva, vagina,
penis, NHLextr, otleuk, otheracuteleuk, ALL)
prim_site_text <- data_frame(PRIMARY_SITE = c(
#NHL sites
"C000",
"C001",
"C002",
"C003",
"C004",
"C005",
"C006",
"C008",
"C009",
"C019",
"C020",
"C021",
"C022",
"C023",
"C024",
"C028",
"C029",
"C030",
"C031",
"C039",
"C040",
"C041",
"C048",
"C049",
"C050",
"C051",
"C052",
"C058",
"C059",
"C060",
"C061",
"C062",
"C068",
"C069",
"C079",
"C098",
"C099",
"C111",
"C142",
"C300",
"C379",
"C420",
"C422",
"C424",
#skin/melanoma
"C440", "C441", "C442", "C443", "C444", "C445",
"C446", "C447", "C448", "C449",
#breast - nipple
"C500",
#vagina/vulva
"C510", "C511", "C512", "C518", "C519", "C529",
#penis
"C600", "C601", "C602", "C608", "C609", "C639",
"C770",
"C771",
"C772",
"C773",
"C774",
"C775",
"C778",
"C779"),
SITE_TEXT = c(
"C00.0 External Lip: Upper NOS",
"C00.1 External Lip: Lower NOS",
"C00.2 External Lip: NOS",
"C00.3 Lip: Upper Mucosa",
"C00.4 Lip: Lower Mucosa",
"C00.5 Lip: Mucosa NOS",
"C00.6 Lip: Commissure",
"C00.8 Lip: Overlapping",
"C00.9 Lip NOS",
"C01.9 Tongue: Base NOS",
"C02.0 Tongue: Dorsal NOS",
"C02.1 Tongue: Border, Tip",
"C02.2 Tongue: Ventral NOS",
"C02.3 Tongue: Anterior NOS",
"C02.4 Lingual Tonsil",
"C02.8 Tongue: Overlapping",
"C02.9 Tongue: NOS",
"C03.0 Gum: Upper",
"C03.1 Gum: Lower",
"C03.9 Gum NOS",
"C04.0 Mouth: Anterior Floor",
"C04.1 Mouth: Lateral Floor",
"C04.8 Mouth: Overlapping Floor",
"C04.9 Floor of Mouth NOS",
"C05.0 Hard Palate",
"C05.1 Soft Palate NOS",
"C05.2 Uvula",
"C05.8 Palate: Overlapping",
"C05.9 Palate NOS",
"C06.0 Cheek Mucosa",
"C06.1 Mouth: Vestibule",
"C06.2 Retromolar Area",
"C06.8 Mouth: Other Overlapping",
"C06.9 Mouth NOS",
"C07.9 Parotid Gland",
"C09.8 Tonsil: Overlapping",
"C09.9 Tonsil NOS",
"C11.1 Nasopharynx: Poster Wall",
"C14.2 Waldeyer Ring",
"C30.0 Nasal Cavity",
"C37.9 Thymus",
"C42.0 Blood",
"C42.2 Spleen",
"C42.4 Hematopoietic NOS",
#skin
"C44.0 Skin of lip, NOS",
"C44.1 Eyelid",
"C44.2 External ear",
"C44.3 Skin of ear and unspecified parts of face",
"C44.4 Skin of scalp and neck",
"C44.5 Skin of trunk",
"C44.6 Skin of upper limb and shoulder",
"C44.7 Skin of lower limb and hip",
"C44.8 Overlapping lesion of skin",
"C44.9 Skin, NOS",
#breast
"C50.0 Nipple",
#vulva/vagina
"C51.0 Labium majus",
"C51.1 Labium minus",
"C51.2 Clitoris",
"C51.8 Overlapping lesion of vulva",
"C51.9 Vulva, NOS",
"C52.9 Vagina, NOS",
#penis
"C60.0 Prepuce",
"C60.1 Glans penis",
"C60.2 Body of penis",
"C60.8 Overlapping lesion of penis",
"C60.9 Penis",
"C63.2 Scrotum, NOS",
"C77.0 Lymph Nodes: HeadFaceNeck",
"C77.1 Intrathoracic Lymph Nodes",
"C77.2 Intra-abdominal LymphNodes",
"C77.3 Lymph Nodes of axilla or arm ",
"C77.4 Lymph Nodes: Leg",
"C77.5 Pelvic Lymph Nodes",
"C77.8 Lymph Nodes: multiple region",
"C77.9 Lymph Node NOS"))
dat <- merge(dat, prim_site_text, by = "PRIMARY_SITE", all.x = TRUE)
rm(prim_site_text)
# convert numeric variables from character class to numeric class
num_vars <- c("AGE", "CROWFLY", "TUMOR_SIZE", "DX_STAGING_PROC_DAYS", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "SURG_DISCHARGE_DAYS", "DX_RAD_STARTED_DAYS", "RAD_REGIONAL_DOSE_CGY",
"RAD_BOOST_DOSE_CGY", "RAD_ELAPSED_RX_DAYS", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS",
"DX_HORMONE_STARTED_DAYS", "DX_OTHER_STARTED_DAYS", "DX_LASTCONTACT_DEATH_MONTHS",
"RAD_NUM_TREAT_VOL")
dat[num_vars] <- lapply(dat[num_vars], as.numeric)
# convert factor variables from character class to factor class
vars <- names(dat)
fact_vars <- vars[!(vars %in% num_vars)] # basically all of the non-numerics
dat[fact_vars] <- lapply(dat[fact_vars], as.character)
dat[fact_vars] <- lapply(dat[fact_vars], as.factor)
dat <- dat %>%
mutate(FACILITY_TYPE_F = fct_recode(FACILITY_TYPE_CD,
"Community Cancer Program" = "1",
"Comprehensive Comm Ca Program" = "2",
"Academic/Research Program" = "3",
"Integrated Network Ca Program" = "4",
"Other" = "9")) %>%
mutate(FACILITY_LOCATION_F = fct_recode(FACILITY_LOCATION_CD,
"New England" = "1",
"Middle Atlantic" = "2",
"South Atlantic" = "3",
"East North Central" = "4",
"East South Central" = "5",
"West North Central" = "6",
"West South Central" = "7",
"Mountain" = "8",
"Pacific" = "9",
"out of US" = "0")) %>%
mutate(FACILITY_GEOGRAPHY = fct_collapse(FACILITY_LOCATION_CD,
"Northeast" = c("1", "2"),
"South" = c("3", "7"),
"Midwest" = c("4", "5", "6"),
"West" = c("8", "9"))) %>%
mutate(AGE_F = cut(AGE, c(0, 54, 64, 74, 100))) %>%
mutate(AGE_40 = cut(AGE, c(0, 40, 100))) %>%
mutate(SEX_F = fct_recode(SEX,
"Male" = "1",
"Female" = "2")) %>%
mutate(RACE_F = fct_collapse(RACE,
"White" = c("01"),
"Black" = c("02"),
"Asian" = c("04", "05", "06", "07", "08", "10", "11", "12", "13", "14", "15",
"16", "17", "20", "21", "22", "25", "26", "27", "28", "30", "31",
"32", "96", "97"),
"Other/Unk" = c("03", "98", "99"))) %>%
mutate(HISPANIC = fct_collapse(SPANISH_HISPANIC_ORIGIN,
"Yes" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"No" = c("0"),
"Unknown" = c("9"))) %>%
mutate(INSURANCE_F = fct_recode(INSURANCE_STATUS,
"None" = "0",
"Private" = "1",
"Medicaid" = "2",
"Medicare" = "3",
"Other Government" = "4",
"Unknown" = "9")) %>%
mutate(INSURANCE_F = fct_relevel(INSURANCE_F,
"Private")) %>%
mutate(INCOME_F = fct_recode(MED_INC_QUAR_12,
"Less than $38,000" = "1",
"$38,000 - $47,999" = "2",
"$48,000 - $62,999" = "3",
"$63,000 +" = "4")) %>%
mutate(EDUCATION_F = fct_recode(NO_HSD_QUAR_12,
"21% or more" = "1",
"13 - 20.9%" = "2",
"7 - 12.9%" = "3",
"Less than 7%" = "4")) %>%
mutate(U_R_F = fct_collapse(UR_CD_13,
"Metro" = c("1", "2", "3"),
"Urban" = c("4", "5", "6", "7"),
"Rural" = c("8", "9"))) %>%
mutate(CLASS_OF_CASE_F = fct_collapse(CLASS_OF_CASE,
All_Part_Prim = c("10", "11", "12", "13",
"14", "20", "21", "22"),
Other_Facility = c("00"))) %>%
mutate(GRADE_F = fct_recode(GRADE,
"Gr I: Well Diff" = "1",
"Gr II: Mod Diff" = "2",
"Gr III: Poor Diff" = "3",
"Gr IV: Undiff/Anaplastic" = "4",
"NA/Unkown" = "9")) %>%
mutate(HISTOLOGY_F = fct_infreq(HISTOLOGY)) %>%
mutate(HISTOLOGY_F = factor(HISTOLOGY_F)) %>%
mutate(HISTOLOGY_F_LIM = fct_lump(HISTOLOGY_F, prop = 0.05)) %>%
mutate(TNM_CLIN_T = fct_recode(TNM_CLIN_T,
"N_A" = "88")) %>%
mutate(TNM_CLIN_T = fct_relevel(TNM_CLIN_T,
"1")) %>%
mutate(TNM_CLIN_N = fct_recode(TNM_CLIN_N,
"N_A" = "88")) %>%
mutate(TNM_CLIN_M = fct_recode(TNM_CLIN_M,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_recode(TNM_PATH_T,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_relevel(TNM_PATH_T,
"1")) %>%
mutate(TNM_PATH_N = fct_recode(TNM_PATH_N,
"N_A" = "88")) %>%
mutate(TNM_PATH_M = fct_recode(TNM_PATH_M,
"N_A" = "88")) %>%
mutate(TNM_CLIN_STAGE_GROUP = fct_recode(TNM_CLIN_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(TNM_PATH_STAGE_GROUP = fct_recode(TNM_PATH_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(MARGINS = fct_recode(RX_SUMM_SURGICAL_MARGINS,
"No Residual" = "0",
"Residual, NOS" = "1",
"Microscopic Resid" = "2",
"Macroscopic Resid" = "3",
"Not evaluable" = "7",
"No surg" = "8",
"Unknown" = "9")) %>%
mutate(MARGINS_YN = fct_collapse(RX_SUMM_SURGICAL_MARGINS,
"Yes" = c("1", "2", "3"),
"No" = c("0"),
"No surg/Unk/NA" = c("7", "8", "9"))) %>%
mutate(READM_HOSP_30_DAYS_F = fct_recode(READM_HOSP_30_DAYS,
"No_Surg_or_No_Readmit" = "0",
"Unplan_Readmit_Same" = "1",
"Plan_Readmit_Same" = "2",
"PlanUnplan_Same" = "3",
"Unknown" = "4")) %>%
mutate(RX_SUMM_RADIATION_F = fct_recode(RX_SUMM_RADIATION,
"None" = "0",
"Beam Radiation" = "1",
"Radioactive Implants" = "2",
"Radioisotopes" = "3",
"Beam + Imp or Isotopes" = "4",
"Radiation, NOS" = "5",
"Unknown" = "9")) %>%
mutate(PUF_30_DAY_MORT_CD_F = fct_recode(PUF_30_DAY_MORT_CD,
"Alive_30" = "0",
"Dead_30" = "1",
"Unknown" = "9")) %>%
mutate(PUF_90_DAY_MORT_CD_F = fct_recode(PUF_90_DAY_MORT_CD,
"Alive_90" = "0",
"Dead_90" = "1",
"Unknown" = "9")) %>%
mutate(LYMPH_VASCULAR_INVASION_F = fct_recode(LYMPH_VASCULAR_INVASION,
"Neg_LymphVasc_Inv" = "0",
"Pos_LumphVasc_Inv" = "1",
"N_A" = "8",
"Unknown" = "9")) %>%
mutate(RX_HOSP_SURG_APPR_2010_F = fct_recode(RX_HOSP_SURG_APPR_2010,
"No_Surg" = "0",
"Robot_Assist" = "1",
"Robot_to_Open" = "2",
"Endo_Lap" = "3",
"Endo_Lap_to_Open" = "4",
"Open_Unknown" = "5",
"Unknown" = "9")) %>%
mutate(All = "All") %>%
mutate(All = factor(All)) %>%
mutate(REASON_FOR_NO_SURGERY_F = fct_recode(REASON_FOR_NO_SURGERY,
"Surg performed" = "0",
"Surg not recommended" = "1",
"No surg due to pt factors" = "2",
"No surg, pt died" = "5",
"Surg rec, not done" = "6",
"Surg rec, pt refused" = "7",
"Surg rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(SURGERY_YN = ifelse(REASON_FOR_NO_SURGERY == "0",
"Yes",
ifelse(REASON_FOR_NO_SURGERY == "9",
"Ukn",
"No"))) %>%
mutate(SURG_TF = case_when(SURGERY_YN == "Yes" ~ TRUE,
SURGERY_YN == "No" ~ FALSE,
TRUE ~ NA)) %>%
mutate(REASON_FOR_NO_RADIATION_F = fct_recode(REASON_FOR_NO_RADIATION,
"Rad performed" = "0",
"Rad not recommended" = "1",
"No Rad due to pt factors" = "2",
"No Rad, pt died" = "5",
"Rad rec, not done" = "6",
"Rad rec, pt refused" = "7",
"Rad rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(RADIATION_YN = ifelse(REASON_FOR_NO_RADIATION == "0",
"Yes",
ifelse(REASON_FOR_NO_RADIATION == "9",
NA,
"No"))) %>%
mutate(SURGRAD_SEQ_F = fct_recode(RX_SUMM_SURGRAD_SEQ,
"None or Surg or Rad" = "0",
"Rad before Surg" = "2",
"Surg before Rad" = "3",
"Rad before and after Surg" = "4",
"Intraop Rad" = "5",
"Intraop Rad plus other" = "6",
"Unknown" = "9")) %>%
mutate(SURG_RAD_SEQ = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Surg Alone",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Rad Alone",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0",
"No Treatment",
ifelse(RX_SUMM_SURGRAD_SEQ == "2",
"Rad then Surg",
ifelse(RX_SUMM_SURGRAD_SEQ == "3",
"Surg then Rad",
ifelse(RX_SUMM_SURGRAD_SEQ == "4",
"Rad before and after Surg",
"Other"))))))) %>%
mutate(SURG_RAD_SEQ = fct_relevel(SURG_RAD_SEQ,
"Surg Alone",
"Surg then Rad",
"Rad Alone")) %>%
mutate(CHEMO_YN = fct_collapse(RX_SUMM_CHEMO,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01", "02", "03"),
"Ukn" = c("88", "99"))) %>%
mutate(IMMUNO_YN = fct_collapse(RX_SUMM_IMMUNOTHERAPY,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01"),
"Ukn" = c("88", "99"))) %>%
mutate(SURG_RAD_SEQ_C = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Surg, No rad, No Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Rad, No Surg, No Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"No Surg, No Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "No",
"Rad then Surg, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "No",
"Surg then Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "No",
"Rad before and after Surg, No Chemo",
ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Surg, No rad, Yes Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Rad, No Surg, Yes Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"No Surg, No Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "Yes",
"Rad then Surg, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "Yes",
"Surg then Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "Yes",
"Rad before and after Surg, Yes Chemo",
"Other"))))))))))))) %>%
mutate(SURG_RAD_SEQ_C = fct_infreq(SURG_RAD_SEQ_C)) %>%
mutate(T_SIZE = as.numeric(TUMOR_SIZE)) %>%
mutate(T_SIZE = ifelse(T_SIZE == 0,
"No Tumor",
ifelse(T_SIZE > 0 & T_SIZE < 10 | T_SIZE == 991,
"< 1 cm",
ifelse(T_SIZE >= 10 & T_SIZE < 20 | T_SIZE == 992,
"1-2 cm",
ifelse(T_SIZE >= 20 & T_SIZE < 30 | T_SIZE == 993,
"2-3 cm",
ifelse(T_SIZE >= 30 & T_SIZE < 40 | T_SIZE == 994,
"3-4 cm",
ifelse(T_SIZE >= 40 & T_SIZE < 50 | T_SIZE == 995,
"4-5 cm",
ifelse(T_SIZE >= 50 & T_SIZE < 60 | T_SIZE == 996,
"5-6 cm",
ifelse(T_SIZE >= 60 & T_SIZE <= 987 |
T_SIZE == 980 | T_SIZE == 989 |
T_SIZE == 997,
">6 cm",
ifelse(T_SIZE == 988 | T_SIZE == 999,
"NA_unk",
"Microscopic focus")))))))))) %>%
mutate(T_SIZE = factor(T_SIZE)) %>%
mutate(T_SIZE = fct_relevel(T_SIZE,
"No Tumor", "Microscopic focus", "< 1 cm", "1-2 cm", "2-3 cm", "3-4 cm",
"4-5 cm", "5-6 cm", ">6 cm", "NA_unk")) %>%
mutate(mets_at_dx = case_when(CS_METS_DX_LUNG == "1" ~ "Lung",
CS_METS_DX_BONE == "1" ~ "Bone",
CS_METS_DX_BRAIN == "1" ~ "Brain",
CS_METS_DX_LIVER == "1" ~ "Liver",
TRUE ~ "None/Other/Unk/NA")) %>%
mutate(MEDICAID_EXPN_CODE = fct_recode(MEDICAID_EXPN_CODE,
"Non-Expansion State" = "0",
"Jan 2014 Expansion States" = "1",
"Early Expansion States (2010-13)" = "2",
"Late Expansion States (> Jan 2014)" = "3",
"Suppressed for Ages 0 - 39" = "9")) %>%
mutate(EXPN_GROUP = case_when(MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in%
c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2010", "2011", "2012", "2013", "2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", "2009") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Non-Expansion State") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Exclude",
MEDICAID_EXPN_CODE == "Suppressed for Ages 0 - 39" ~ "Exclude")) %>%
mutate(pre_2014 = YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013")) %>%
mutate(mets_at_dx_F = ifelse(mets_at_dx == "None/Other/Unk/NA", FALSE, TRUE)) %>%
mutate(Tx_YN = ifelse(SURG_RAD_SEQ == "No Treatment" & CHEMO_YN == "No" &
IMMUNO_YN == "No", FALSE,
ifelse(CHEMO_YN == "Ukn", NA,
TRUE)))
fact_vars_2 <- c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "AGE_F", "SEX_F", "RACE_F",
"HISPANIC", "INSURANCE_F", "INCOME_F", "EDUCATION_F", "U_R_F",
"CDCC_TOTAL_BEST", "CLASS_OF_CASE_F", "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "HISTOLOGY",
"BEHAVIOR", "GRADE_F", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M", "TNM_PATH_STAGE_GROUP",
"MARGINS", "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "mets_at_dx")
dat <- dat %>%
mutate_at(fact_vars_2, funs(factor(.)))
Table of variables for all cases:
data <- data %>% droplevels()
p_table(data,
vars = c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "FACILITY_GEOGRAPHY", "AGE", "AGE_F", "AGE_40",
"SEX_F", "RACE_F", "HISPANIC", "INSURANCE_F",
"INCOME_F", "EDUCATION_F", "U_R_F", "CROWFLY", "CDCC_TOTAL_BEST",
"SITE_TEXT", "HISTOLOGY", "BEHAVIOR", "GRADE_F",
"DX_STAGING_PROC_DAYS", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
"TNM_PATH_STAGE_GROUP", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "MARGINS", "MARGINS_YN", "SURG_DISCHARGE_DAYS",
"READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "DX_LASTCONTACT_DEATH_MONTHS",
"LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "SURG_RAD_SEQ",
"SURG_RAD_SEQ_C", "SURGERY_YN", "RADIATION_YN", "CHEMO_YN", "IMMUNO_YN", "Tx_YN", "mets_at_dx",
"MEDICAID_EXPN_CODE", "EXPN_GROUP", "YEAR_OF_DIAGNOSIS"))
| n |
|
334 |
| FACILITY_TYPE_F (%) |
Community Cancer Program |
8 ( 2.4) |
|
Comprehensive Comm Ca Program |
50 ( 15.0) |
|
Academic/Research Program |
254 ( 76.0) |
|
Integrated Network Ca Program |
11 ( 3.3) |
|
NA |
11 ( 3.3) |
| FACILITY_LOCATION_F (%) |
New England |
23 ( 6.9) |
|
Middle Atlantic |
59 ( 17.7) |
|
South Atlantic |
60 ( 18.0) |
|
East North Central |
53 ( 15.9) |
|
East South Central |
17 ( 5.1) |
|
West North Central |
35 ( 10.5) |
|
West South Central |
17 ( 5.1) |
|
Mountain |
25 ( 7.5) |
|
Pacific |
34 ( 10.2) |
|
NA |
11 ( 3.3) |
| FACILITY_GEOGRAPHY (%) |
Northeast |
82 ( 24.6) |
|
South |
77 ( 23.1) |
|
Midwest |
105 ( 31.4) |
|
West |
59 ( 17.7) |
|
NA |
11 ( 3.3) |
| AGE (mean (sd)) |
|
65.71 (12.95) |
| AGE_F (%) |
(0,54] |
61 ( 18.3) |
|
(54,64] |
77 ( 23.1) |
|
(64,74] |
107 ( 32.0) |
|
(74,100] |
89 ( 26.6) |
| AGE_40 (%) |
(0,40] |
14 ( 4.2) |
|
(40,100] |
320 ( 95.8) |
| SEX_F (%) |
Male |
191 ( 57.2) |
|
Female |
143 ( 42.8) |
| RACE_F (%) |
White |
246 ( 73.7) |
|
Black |
68 ( 20.4) |
|
Other/Unk |
14 ( 4.2) |
|
Asian |
6 ( 1.8) |
| HISPANIC (%) |
No |
308 ( 92.2) |
|
Yes |
11 ( 3.3) |
|
Unknown |
15 ( 4.5) |
| INSURANCE_F (%) |
Private |
117 ( 35.0) |
|
None |
11 ( 3.3) |
|
Medicaid |
19 ( 5.7) |
|
Medicare |
181 ( 54.2) |
|
Other Government |
2 ( 0.6) |
|
Unknown |
4 ( 1.2) |
| INCOME_F (%) |
Less than $38,000 |
63 ( 18.9) |
|
$38,000 - $47,999 |
68 ( 20.4) |
|
$48,000 - $62,999 |
87 ( 26.0) |
|
$63,000 + |
114 ( 34.1) |
|
NA |
2 ( 0.6) |
| EDUCATION_F (%) |
21% or more |
48 ( 14.4) |
|
13 - 20.9% |
78 ( 23.4) |
|
7 - 12.9% |
105 ( 31.4) |
|
Less than 7% |
102 ( 30.5) |
|
NA |
1 ( 0.3) |
| U_R_F (%) |
Metro |
278 ( 83.2) |
|
Urban |
39 ( 11.7) |
|
Rural |
3 ( 0.9) |
|
NA |
14 ( 4.2) |
| CROWFLY (mean (sd)) |
|
64.08 (156.22) |
| CDCC_TOTAL_BEST (%) |
0 |
290 ( 86.8) |
|
1 |
35 ( 10.5) |
|
2 |
7 ( 2.1) |
|
3 |
2 ( 0.6) |
| SITE_TEXT (%) |
C44.3 Skin of ear and unspecified parts of face |
1 ( 0.3) |
|
C44.4 Skin of scalp and neck |
1 ( 0.3) |
|
C44.5 Skin of trunk |
13 ( 3.9) |
|
C44.6 Skin of upper limb and shoulder |
5 ( 1.5) |
|
C44.7 Skin of lower limb and hip |
8 ( 2.4) |
|
C44.8 Overlapping lesion of skin |
54 ( 16.2) |
|
C44.9 Skin, NOS |
252 ( 75.4) |
| HISTOLOGY (%) |
9701 |
334 (100.0) |
| BEHAVIOR (%) |
3 |
334 (100.0) |
| GRADE_F (%) |
Gr I: Well Diff |
1 ( 0.3) |
|
5 |
276 ( 82.6) |
|
NA/Unkown |
57 ( 17.1) |
| DX_STAGING_PROC_DAYS (mean (sd)) |
|
4.52 (32.81) |
| TNM_CLIN_T (%) |
N_A |
4 ( 1.2) |
|
c1 |
19 ( 5.7) |
|
c2 |
22 ( 6.6) |
|
c2B |
1 ( 0.3) |
|
c3 |
23 ( 6.9) |
|
c4 |
149 ( 44.6) |
|
cX |
103 ( 30.8) |
|
NA |
13 ( 3.9) |
| TNM_CLIN_N (%) |
N_A |
4 ( 1.2) |
|
c0 |
104 ( 31.1) |
|
c1 |
42 ( 12.6) |
|
c1A |
2 ( 0.6) |
|
c1B |
4 ( 1.2) |
|
c2 |
10 ( 3.0) |
|
c2B |
2 ( 0.6) |
|
c3 |
17 ( 5.1) |
|
cX |
137 ( 41.0) |
|
NA |
12 ( 3.6) |
| TNM_CLIN_M (%) |
N_A |
4 ( 1.2) |
|
c0 |
281 ( 84.1) |
|
c1 |
27 ( 8.1) |
|
NA |
22 ( 6.6) |
| TNM_CLIN_STAGE_GROUP (%) |
1 |
5 ( 1.5) |
|
1A |
12 ( 3.6) |
|
1B |
13 ( 3.9) |
|
2 |
1 ( 0.3) |
|
2A |
5 ( 1.5) |
|
2B |
14 ( 4.2) |
|
3 |
13 ( 3.9) |
|
3A |
35 ( 10.5) |
|
3B |
29 ( 8.7) |
|
4 |
28 ( 8.4) |
|
4A |
35 ( 10.5) |
|
4A1 |
46 ( 13.8) |
|
4A2 |
12 ( 3.6) |
|
4B |
30 ( 9.0) |
|
N_A |
3 ( 0.9) |
|
99 |
53 ( 15.9) |
| TNM_PATH_T (%) |
N_A |
5 ( 1.5) |
|
p1 |
5 ( 1.5) |
|
p2 |
12 ( 3.6) |
|
p2B |
2 ( 0.6) |
|
p3 |
10 ( 3.0) |
|
p4 |
64 ( 19.2) |
|
pX |
116 ( 34.7) |
|
NA |
120 ( 35.9) |
| TNM_PATH_N (%) |
N_A |
5 ( 1.5) |
|
p0 |
23 ( 6.9) |
|
p1 |
9 ( 2.7) |
|
p1A |
1 ( 0.3) |
|
p1B |
2 ( 0.6) |
|
p2 |
5 ( 1.5) |
|
p3 |
3 ( 0.9) |
|
pX |
178 ( 53.3) |
|
NA |
108 ( 32.3) |
| TNM_PATH_M (%) |
N_A |
5 ( 1.5) |
|
p1 |
14 ( 4.2) |
|
pX |
117 ( 35.0) |
|
NA |
198 ( 59.3) |
| TNM_PATH_STAGE_GROUP (%) |
1 |
3 ( 0.9) |
|
1A |
2 ( 0.6) |
|
1B |
5 ( 1.5) |
|
2A |
1 ( 0.3) |
|
2B |
4 ( 1.2) |
|
3 |
3 ( 0.9) |
|
3A |
6 ( 1.8) |
|
3B |
9 ( 2.7) |
|
4 |
10 ( 3.0) |
|
4A |
5 ( 1.5) |
|
4B |
18 ( 5.4) |
|
N_A |
3 ( 0.9) |
|
99 |
218 ( 65.3) |
|
NA |
47 ( 14.1) |
| DX_RX_STARTED_DAYS (mean (sd)) |
|
43.65 (48.04) |
| DX_SURG_STARTED_DAYS (mean (sd)) |
|
44.10 (63.62) |
| DX_DEFSURG_STARTED_DAYS (mean (sd)) |
|
58.52 (92.27) |
| MARGINS (%) |
No Residual |
3 ( 0.9) |
|
Residual, NOS |
2 ( 0.6) |
|
Macroscopic Resid |
1 ( 0.3) |
|
Not evaluable |
12 ( 3.6) |
|
No surg |
301 ( 90.1) |
|
Unknown |
15 ( 4.5) |
| MARGINS_YN (%) |
No |
3 ( 0.9) |
|
Yes |
3 ( 0.9) |
|
No surg/Unk/NA |
328 ( 98.2) |
| SURG_DISCHARGE_DAYS (mean (sd)) |
|
4.91 (13.91) |
| READM_HOSP_30_DAYS_F (%) |
No_Surg_or_No_Readmit |
328 ( 98.2) |
|
Plan_Readmit_Same |
1 ( 0.3) |
|
9 |
5 ( 1.5) |
| RX_SUMM_RADIATION_F (%) |
None |
316 ( 94.6) |
|
Beam Radiation |
18 ( 5.4) |
| PUF_30_DAY_MORT_CD_F (%) |
Alive_30 |
13 ( 3.9) |
|
Unknown |
1 ( 0.3) |
|
NA |
320 ( 95.8) |
| PUF_90_DAY_MORT_CD_F (%) |
Alive_90 |
13 ( 3.9) |
|
Unknown |
1 ( 0.3) |
|
NA |
320 ( 95.8) |
| DX_LASTCONTACT_DEATH_MONTHS (mean (sd)) |
|
34.65 (32.04) |
| LYMPH_VASCULAR_INVASION_F (%) |
N_A |
217 ( 65.0) |
|
NA |
117 ( 35.0) |
| RX_HOSP_SURG_APPR_2010_F (%) |
No_Surg |
203 ( 60.8) |
|
Endo_Lap |
1 ( 0.3) |
|
Open_Unknown |
12 ( 3.6) |
|
Unknown |
1 ( 0.3) |
|
NA |
117 ( 35.0) |
| SURG_RAD_SEQ (%) |
Surg Alone |
32 ( 9.6) |
|
Rad Alone |
18 ( 5.4) |
|
No Treatment |
282 ( 84.4) |
|
Other |
2 ( 0.6) |
| SURG_RAD_SEQ_C (%) |
Surg, No rad, No Chemo |
12 ( 3.6) |
|
Surg, No rad, Yes Chemo |
19 ( 5.7) |
|
No Surg, No Rad, Yes Chemo |
153 ( 45.8) |
|
No Surg, No Rad, No Chemo |
123 ( 36.8) |
|
Other |
9 ( 2.7) |
|
Rad, No Surg, Yes Chemo |
14 ( 4.2) |
|
Rad, No Surg, No Chemo |
4 ( 1.2) |
| SURGERY_YN (%) |
No |
300 ( 89.8) |
|
Ukn |
2 ( 0.6) |
|
Yes |
32 ( 9.6) |
| RADIATION_YN (%) |
No |
316 ( 94.6) |
|
Yes |
18 ( 5.4) |
| CHEMO_YN (%) |
No |
141 ( 42.2) |
|
Yes |
186 ( 55.7) |
|
Ukn |
7 ( 2.1) |
| IMMUNO_YN (%) |
No |
250 ( 74.9) |
|
Yes |
83 ( 24.9) |
|
Ukn |
1 ( 0.3) |
| Tx_YN (%) |
FALSE |
86 ( 25.7) |
|
TRUE |
241 ( 72.2) |
|
NA |
7 ( 2.1) |
| mets_at_dx (%) |
Bone |
5 ( 1.5) |
|
Liver |
1 ( 0.3) |
|
None/Other/Unk/NA |
328 ( 98.2) |
| MEDICAID_EXPN_CODE (%) |
Non-Expansion State |
116 ( 34.7) |
|
Jan 2014 Expansion States |
107 ( 32.0) |
|
Early Expansion States (2010-13) |
52 ( 15.6) |
|
Late Expansion States (> Jan 2014) |
48 ( 14.4) |
|
Suppressed for Ages 0 - 39 |
11 ( 3.3) |
| EXPN_GROUP (%) |
Exclude |
11 ( 3.3) |
|
Post-Expansion |
58 ( 17.4) |
|
Pre-Expansion |
265 ( 79.3) |
| YEAR_OF_DIAGNOSIS (%) |
2004 |
14 ( 4.2) |
|
2005 |
12 ( 3.6) |
|
2006 |
20 ( 6.0) |
|
2007 |
22 ( 6.6) |
|
2008 |
22 ( 6.6) |
|
2009 |
27 ( 8.1) |
|
2010 |
35 ( 10.5) |
|
2011 |
34 ( 10.2) |
|
2012 |
29 ( 8.7) |
|
2013 |
32 ( 9.6) |
|
2014 |
39 ( 11.7) |
|
2015 |
48 ( 14.4) |
Kaplan Meier Analysis
All
uni_var(test_var = "All", data_imp = data)
_________________________________________________
## All
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
n events median 0.95LCL 0.95UCL
334.0 187.0 36.5 31.1 44.7
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 236 60 0.808 0.0223 0.766 0.853
24 175 44 0.649 0.0280 0.597 0.707
36 122 36 0.509 0.0302 0.453 0.572
48 83 18 0.428 0.0309 0.371 0.493
60 57 14 0.349 0.0317 0.292 0.417
120 10 14 0.224 0.0353 0.164 0.305
## Univariable Cox Proportional Hazard Model for: All
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: All



Facility Type
uni_var(test_var = "FACILITY_TYPE_F", data_imp = data)
_________________________________________________
## FACILITY_TYPE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
11 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_TYPE_F=Community Cancer Program 8 5 23.9 13.24 NA
FACILITY_TYPE_F=Comprehensive Comm Ca Program 50 26 57.1 30.75 112
FACILITY_TYPE_F=Academic/Research Program 254 142 36.2 31.05 48
FACILITY_TYPE_F=Integrated Network Ca Program 11 8 30.5 9.63 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
11 observations deleted due to missingness
FACILITY_TYPE_F=Community Cancer Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 1 0.875 0.117 0.673 1
24 2 3 0.389 0.201 0.141 1
FACILITY_TYPE_F=Comprehensive Comm Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 35 10 0.791 0.0590 0.684 0.916
24 28 5 0.671 0.0703 0.547 0.824
36 23 2 0.623 0.0730 0.495 0.784
48 16 3 0.531 0.0793 0.396 0.712
60 12 1 0.490 0.0831 0.352 0.683
120 4 5 0.224 0.0899 0.102 0.492
FACILITY_TYPE_F=Academic/Research Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 181 43 0.817 0.0253 0.769 0.868
24 135 32 0.664 0.0319 0.605 0.730
36 91 31 0.503 0.0350 0.439 0.577
48 61 13 0.426 0.0356 0.361 0.502
60 39 13 0.327 0.0365 0.263 0.407
120 5 9 0.229 0.0381 0.165 0.317
FACILITY_TYPE_F=Integrated Network Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 4 0.636 0.145 0.4071 0.995
24 5 1 0.530 0.155 0.2992 0.940
36 4 1 0.424 0.156 0.2063 0.872
48 2 2 0.212 0.132 0.0628 0.716
60 2 0 0.212 0.132 0.0628 0.716
## Univariable Cox Proportional Hazard Model for: FACILITY_TYPE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
n= 323, number of events= 181
(11 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_TYPE_FComprehensive Comm Ca Program -0.8538 0.4258 0.4931 -1.731 0.0834 .
FACILITY_TYPE_FAcademic/Research Program -0.6433 0.5255 0.4584 -1.403 0.1605
FACILITY_TYPE_FIntegrated Network Ca Program -0.2621 0.7694 0.5734 -0.457 0.6476
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FComprehensive Comm Ca Program 0.4258 2.349 0.1620 1.119
FACILITY_TYPE_FAcademic/Research Program 0.5255 1.903 0.2140 1.291
FACILITY_TYPE_FIntegrated Network Ca Program 0.7694 1.300 0.2501 2.367
Concordance= 0.526 (se = 0.017 )
Rsquare= 0.012 (max possible= 0.996 )
Likelihood ratio test= 3.9 on 3 df, p=0.2722
Wald test = 4.32 on 3 df, p=0.229
Score (logrank) test = 4.43 on 3 df, p=0.2185
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_TYPE_F



Facility Location
uni_var(test_var = "FACILITY_LOCATION_F", data_imp = data)
_________________________________________________
## FACILITY_LOCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
11 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_LOCATION_F=New England 23 12 30.2 25.4 NA
FACILITY_LOCATION_F=Middle Atlantic 59 30 48.0 36.4 NA
FACILITY_LOCATION_F=South Atlantic 60 40 22.7 17.5 41.4
FACILITY_LOCATION_F=East North Central 53 26 52.0 32.5 NA
FACILITY_LOCATION_F=East South Central 17 11 26.6 17.5 NA
FACILITY_LOCATION_F=West North Central 35 22 43.0 34.8 65.4
FACILITY_LOCATION_F=West South Central 17 9 27.2 16.3 NA
FACILITY_LOCATION_F=Mountain 25 15 34.3 23.2 NA
FACILITY_LOCATION_F=Pacific 34 16 41.7 24.4 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
11 observations deleted due to missingness
FACILITY_LOCATION_F=New England
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 17 2 0.909 0.0613 0.797 1.000
24 12 4 0.691 0.1061 0.512 0.934
36 5 5 0.378 0.1210 0.202 0.708
48 3 0 0.378 0.1210 0.202 0.708
FACILITY_LOCATION_F=Middle Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 42 10 0.819 0.0518 0.724 0.928
24 36 6 0.702 0.0627 0.590 0.837
36 30 4 0.623 0.0670 0.505 0.769
48 17 4 0.530 0.0717 0.406 0.691
60 13 3 0.434 0.0772 0.306 0.615
FACILITY_LOCATION_F=South Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 36 17 0.6947 0.0620 0.5832 0.828
24 21 10 0.4755 0.0715 0.3541 0.639
36 16 4 0.3804 0.0713 0.2635 0.549
48 12 3 0.3073 0.0690 0.1978 0.477
60 7 2 0.2483 0.0673 0.1460 0.422
120 2 4 0.0851 0.0537 0.0248 0.293
FACILITY_LOCATION_F=East North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 42 6 0.882 0.0454 0.797 0.975
24 34 5 0.774 0.0602 0.665 0.902
36 23 8 0.587 0.0735 0.459 0.750
48 17 3 0.502 0.0776 0.371 0.680
60 11 3 0.405 0.0808 0.274 0.598
120 2 1 0.360 0.0834 0.228 0.566
FACILITY_LOCATION_F=East South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 5 0.697 0.114 0.506 0.959
24 9 2 0.570 0.123 0.373 0.871
36 4 4 0.285 0.118 0.127 0.642
48 2 0 0.285 0.118 0.127 0.642
FACILITY_LOCATION_F=West North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 26 5 0.840 0.0658 0.720 0.979
24 20 3 0.733 0.0814 0.589 0.911
36 15 4 0.582 0.0934 0.425 0.797
48 12 3 0.465 0.0959 0.311 0.697
60 9 2 0.381 0.0953 0.233 0.622
FACILITY_LOCATION_F=West South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 12 1 0.923 0.0739 0.7890 1.000
24 6 4 0.575 0.1459 0.3500 0.946
36 3 1 0.480 0.1498 0.2599 0.885
48 2 1 0.320 0.1644 0.1167 0.876
60 1 1 0.160 0.1397 0.0288 0.887
120 1 0 0.160 0.1397 0.0288 0.887
FACILITY_LOCATION_F=Mountain
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 17 5 0.783 0.0863 0.6308 0.972
24 13 3 0.636 0.1037 0.4622 0.876
36 8 3 0.478 0.1116 0.3028 0.756
48 5 1 0.399 0.1181 0.2231 0.713
60 3 2 0.239 0.1125 0.0952 0.601
120 1 1 0.159 0.0993 0.0471 0.540
FACILITY_LOCATION_F=Pacific
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 7 0.792 0.0700 0.666 0.942
24 19 4 0.661 0.0838 0.515 0.847
36 14 2 0.584 0.0901 0.432 0.790
48 9 3 0.459 0.0955 0.305 0.690
60 9 0 0.459 0.0955 0.305 0.690
120 3 0 0.459 0.0955 0.305 0.690
## Univariable Cox Proportional Hazard Model for: FACILITY_LOCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
n= 323, number of events= 181
(11 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_LOCATION_FMiddle Atlantic -0.425375 0.653525 0.343890 -1.237 0.216
FACILITY_LOCATION_FSouth Atlantic 0.219071 1.244920 0.330981 0.662 0.508
FACILITY_LOCATION_FEast North Central -0.500739 0.606083 0.351308 -1.425 0.154
FACILITY_LOCATION_FEast South Central 0.227972 1.256050 0.417558 0.546 0.585
FACILITY_LOCATION_FWest North Central -0.176015 0.838605 0.360914 -0.488 0.626
FACILITY_LOCATION_FWest South Central -0.007877 0.992154 0.443088 -0.018 0.986
FACILITY_LOCATION_FMountain -0.024160 0.976130 0.388075 -0.062 0.950
FACILITY_LOCATION_FPacific -0.512241 0.599151 0.385513 -1.329 0.184
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_LOCATION_FMiddle Atlantic 0.6535 1.5302 0.3331 1.282
FACILITY_LOCATION_FSouth Atlantic 1.2449 0.8033 0.6507 2.382
FACILITY_LOCATION_FEast North Central 0.6061 1.6499 0.3044 1.207
FACILITY_LOCATION_FEast South Central 1.2561 0.7961 0.5541 2.847
FACILITY_LOCATION_FWest North Central 0.8386 1.1925 0.4134 1.701
FACILITY_LOCATION_FWest South Central 0.9922 1.0079 0.4163 2.364
FACILITY_LOCATION_FMountain 0.9761 1.0245 0.4562 2.089
FACILITY_LOCATION_FPacific 0.5992 1.6690 0.2814 1.276
Concordance= 0.572 (se = 0.024 )
Rsquare= 0.045 (max possible= 0.996 )
Likelihood ratio test= 14.83 on 8 df, p=0.06256
Wald test = 15.03 on 8 df, p=0.05848
Score (logrank) test = 15.49 on 8 df, p=0.05033
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_LOCATION_F



Facility Geography
uni_var(test_var = "FACILITY_GEOGRAPHY", data_imp = data)
_________________________________________________
## FACILITY_GEOGRAPHY
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
11 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_GEOGRAPHY=Northeast 82 42 43.4 30.2 81.6
FACILITY_GEOGRAPHY=South 77 49 23.7 20.2 41.4
FACILITY_GEOGRAPHY=Midwest 105 59 41.7 32.5 59.6
FACILITY_GEOGRAPHY=West 59 31 39.2 25.6 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
11 observations deleted due to missingness
FACILITY_GEOGRAPHY=Northeast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 59 12 0.843 0.0418 0.765 0.929
24 48 10 0.699 0.0540 0.601 0.814
36 35 9 0.565 0.0594 0.460 0.694
48 20 4 0.493 0.0620 0.386 0.631
60 13 4 0.389 0.0675 0.277 0.547
FACILITY_GEOGRAPHY=South
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 48 18 0.745 0.0521 0.6500 0.855
24 27 14 0.498 0.0645 0.3859 0.642
36 19 5 0.398 0.0653 0.2888 0.549
48 14 4 0.312 0.0639 0.2087 0.466
60 8 3 0.235 0.0617 0.1409 0.393
120 3 4 0.103 0.0518 0.0384 0.276
FACILITY_GEOGRAPHY=Midwest
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 79 16 0.838 0.0372 0.768 0.914
24 63 10 0.726 0.0461 0.641 0.822
36 42 16 0.534 0.0534 0.439 0.650
48 31 6 0.453 0.0547 0.357 0.574
60 20 5 0.368 0.0561 0.273 0.496
120 2 6 0.223 0.0596 0.132 0.376
FACILITY_GEOGRAPHY=West
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 42 12 0.787 0.0546 0.687 0.902
24 32 7 0.649 0.0654 0.533 0.791
36 22 5 0.540 0.0705 0.418 0.697
48 14 4 0.434 0.0740 0.311 0.606
60 12 2 0.372 0.0753 0.250 0.553
120 4 1 0.338 0.0757 0.218 0.524
## Univariable Cox Proportional Hazard Model for: FACILITY_GEOGRAPHY
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
n= 323, number of events= 181
(11 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_GEOGRAPHYSouth 0.49512 1.64069 0.21103 2.346 0.019 *
FACILITY_GEOGRAPHYMidwest 0.04494 1.04597 0.20203 0.222 0.824
FACILITY_GEOGRAPHYWest 0.02051 1.02072 0.23760 0.086 0.931
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_GEOGRAPHYSouth 1.641 0.6095 1.0849 2.481
FACILITY_GEOGRAPHYMidwest 1.046 0.9561 0.7040 1.554
FACILITY_GEOGRAPHYWest 1.021 0.9797 0.6407 1.626
Concordance= 0.541 (se = 0.023 )
Rsquare= 0.022 (max possible= 0.996 )
Likelihood ratio test= 7.32 on 3 df, p=0.06233
Wald test = 7.89 on 3 df, p=0.04835
Score (logrank) test = 8.03 on 3 df, p=0.04531
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_GEOGRAPHY



Age Group
uni_var(test_var = "AGE_F", data_imp = data)
_________________________________________________
## AGE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n events median 0.95LCL 0.95UCL
AGE_F=(0,54] 61 34 33.5 27.2 NA
AGE_F=(54,64] 77 35 59.4 34.8 NA
AGE_F=(64,74] 107 55 40.2 35.0 56.6
AGE_F=(74,100] 89 63 26.6 22.0 35.2
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
AGE_F=(0,54]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 47 10 0.829 0.0492 0.738 0.932
24 35 9 0.664 0.0631 0.551 0.800
36 26 9 0.494 0.0679 0.377 0.646
48 24 0 0.494 0.0679 0.377 0.646
60 19 3 0.430 0.0684 0.315 0.587
120 6 2 0.375 0.0701 0.260 0.541
AGE_F=(54,64]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 57 8 0.888 0.0374 0.818 0.964
24 45 9 0.741 0.0547 0.641 0.856
36 31 8 0.597 0.0635 0.485 0.736
48 24 3 0.532 0.0667 0.417 0.681
60 16 2 0.480 0.0699 0.361 0.639
120 3 5 0.229 0.0950 0.101 0.516
AGE_F=(64,74]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 74 20 0.796 0.0409 0.719 0.880
24 57 9 0.691 0.0481 0.603 0.792
36 40 8 0.588 0.0532 0.492 0.702
48 23 8 0.461 0.0580 0.360 0.590
60 12 7 0.306 0.0618 0.206 0.455
120 1 3 0.201 0.0645 0.107 0.377
AGE_F=(74,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 58 22 0.740 0.0478 0.652 0.840
24 38 17 0.514 0.0565 0.415 0.638
36 25 11 0.363 0.0554 0.269 0.489
48 12 7 0.240 0.0531 0.155 0.370
60 10 2 0.200 0.0512 0.121 0.330
## Univariable Cox Proportional Hazard Model for: AGE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
AGE_F(54,64] -0.06007 0.94170 0.24187 -0.248 0.80387
AGE_F(64,74] 0.19719 1.21797 0.22119 0.891 0.37267
AGE_F(74,100] 0.67073 1.95566 0.21654 3.097 0.00195 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
AGE_F(54,64] 0.9417 1.0619 0.5862 1.513
AGE_F(64,74] 1.2180 0.8210 0.7895 1.879
AGE_F(74,100] 1.9557 0.5113 1.2793 2.990
Concordance= 0.574 (se = 0.023 )
Rsquare= 0.045 (max possible= 0.997 )
Likelihood ratio test= 15.55 on 3 df, p=0.0014
Wald test = 16.31 on 3 df, p=0.0009774
Score (logrank) test = 16.85 on 3 df, p=0.0007603
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_F



Age Group
uni_var(test_var = "AGE_40", data_imp = data)
_________________________________________________
## AGE_40
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n events median 0.95LCL 0.95UCL
AGE_40=(0,40] 14 7 31.5 21.6 NA
AGE_40=(40,100] 320 180 36.5 31.1 44.7
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
AGE_40=(0,40]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 2 0.851 0.0973 0.680 1.000
24 7 3 0.602 0.1397 0.382 0.949
36 5 2 0.430 0.1433 0.224 0.826
48 5 0 0.430 0.1433 0.224 0.826
60 5 0 0.430 0.1433 0.224 0.826
120 1 0 0.430 0.1433 0.224 0.826
AGE_40=(40,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 225 58 0.806 0.0229 0.763 0.852
24 168 41 0.652 0.0286 0.598 0.710
36 117 34 0.513 0.0309 0.456 0.577
48 78 18 0.427 0.0317 0.369 0.494
60 52 14 0.343 0.0326 0.285 0.413
120 9 14 0.213 0.0357 0.154 0.296
## Univariable Cox Proportional Hazard Model for: AGE_40
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
AGE_40(40,100] 0.2716 1.3120 0.3859 0.704 0.482
exp(coef) exp(-coef) lower .95 upper .95
AGE_40(40,100] 1.312 0.7622 0.6158 2.795
Concordance= 0.502 (se = 0.008 )
Rsquare= 0.002 (max possible= 0.997 )
Likelihood ratio test= 0.54 on 1 df, p=0.4629
Wald test = 0.5 on 1 df, p=0.4816
Score (logrank) test = 0.5 on 1 df, p=0.4802
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_40



Gender
uni_var(test_var = "SEX_F", data_imp = data)
_________________________________________________
## SEX_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n events median 0.95LCL 0.95UCL
SEX_F=Male 191 100 39.2 28.3 57.1
SEX_F=Female 143 87 35.0 30.2 47.0
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
SEX_F=Male
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 135 38 0.789 0.0305 0.731 0.851
24 99 25 0.633 0.0371 0.565 0.710
36 72 17 0.520 0.0394 0.448 0.603
48 50 8 0.456 0.0406 0.383 0.543
60 34 5 0.407 0.0418 0.332 0.497
120 5 7 0.254 0.0580 0.163 0.398
SEX_F=Female
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 101 22 0.836 0.0320 0.776 0.902
24 76 19 0.672 0.0425 0.594 0.761
36 50 19 0.494 0.0471 0.409 0.595
48 33 10 0.389 0.0474 0.306 0.494
60 23 9 0.281 0.0460 0.203 0.387
120 5 7 0.172 0.0436 0.104 0.282
## Univariable Cox Proportional Hazard Model for: SEX_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
SEX_FFemale 0.1924 1.2121 0.1467 1.311 0.19
exp(coef) exp(-coef) lower .95 upper .95
SEX_FFemale 1.212 0.825 0.9091 1.616
Concordance= 0.507 (se = 0.02 )
Rsquare= 0.005 (max possible= 0.997 )
Likelihood ratio test= 1.71 on 1 df, p=0.1913
Wald test = 1.72 on 1 df, p=0.1899
Score (logrank) test = 1.72 on 1 df, p=0.1893
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SEX_F



RACE_F
uni_var(test_var = "RACE_F", data_imp = data)
_________________________________________________
## RACE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n events median 0.95LCL 0.95UCL
RACE_F=White 246 139 35.2 28.4 48
RACE_F=Black 68 37 39.2 30.8 NA
RACE_F=Other/Unk 14 9 43.0 34.3 NA
RACE_F=Asian 6 2 NA 21.7 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
RACE_F=White
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 169 45 0.802 0.0266 0.751 0.855
24 122 35 0.627 0.0334 0.565 0.696
36 87 25 0.493 0.0354 0.429 0.568
48 59 11 0.424 0.0362 0.359 0.501
60 43 9 0.355 0.0369 0.289 0.435
120 7 13 0.195 0.0408 0.129 0.293
RACE_F=Black
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 50 13 0.806 0.0484 0.716 0.907
24 41 6 0.705 0.0573 0.601 0.827
36 27 9 0.543 0.0649 0.429 0.686
48 19 5 0.440 0.0670 0.326 0.593
60 13 3 0.364 0.0684 0.252 0.526
120 3 1 0.334 0.0691 0.222 0.501
RACE_F=Other/Unk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 12 1 0.923 0.0739 0.789 1.000
24 9 2 0.755 0.1232 0.549 1.000
36 7 2 0.587 0.1419 0.366 0.943
48 4 2 0.420 0.1426 0.216 0.817
RACE_F=Asian
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 1 0.833 0.152 0.583 1
24 3 1 0.625 0.213 0.320 1
36 1 0 0.625 0.213 0.320 1
48 1 0 0.625 0.213 0.320 1
60 1 0 0.625 0.213 0.320 1
## Univariable Cox Proportional Hazard Model for: RACE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
RACE_FBlack -0.16743 0.84584 0.18519 -0.904 0.366
RACE_FOther/Unk 0.03654 1.03722 0.34526 0.106 0.916
RACE_FAsian -0.45470 0.63464 0.71268 -0.638 0.523
exp(coef) exp(-coef) lower .95 upper .95
RACE_FBlack 0.8458 1.1823 0.5884 1.216
RACE_FOther/Unk 1.0372 0.9641 0.5272 2.041
RACE_FAsian 0.6346 1.5757 0.1570 2.565
Concordance= 0.504 (se = 0.018 )
Rsquare= 0.004 (max possible= 0.997 )
Likelihood ratio test= 1.29 on 3 df, p=0.7308
Wald test = 1.22 on 3 df, p=0.7493
Score (logrank) test = 1.22 on 3 df, p=0.7474
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: RACE_F



Hispanic
uni_var(test_var = "HISPANIC", data_imp = data)
_________________________________________________
## HISPANIC
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n events median 0.95LCL 0.95UCL
HISPANIC=No 308 174 35.2 30.5 44.7
HISPANIC=Yes 11 6 59.4 13.9 NA
HISPANIC=Unknown 15 7 45.5 36.4 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
HISPANIC=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 216 58 0.799 0.0236 0.754 0.847
24 158 41 0.638 0.0294 0.583 0.699
36 108 33 0.498 0.0315 0.440 0.564
48 75 15 0.424 0.0322 0.365 0.492
60 53 12 0.350 0.0329 0.291 0.421
120 9 14 0.214 0.0366 0.153 0.299
HISPANIC=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 2 0.808 0.122 0.600 1.000
24 6 2 0.606 0.154 0.368 0.998
36 5 1 0.505 0.158 0.273 0.933
48 2 0 0.505 0.158 0.273 0.933
HISPANIC=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 12 0 1.000 0.0000 1.000 1.000
24 11 1 0.917 0.0798 0.773 1.000
36 9 2 0.750 0.1250 0.541 1.000
48 6 3 0.500 0.1443 0.284 0.880
60 4 1 0.417 0.1423 0.213 0.814
120 1 0 0.417 0.1423 0.213 0.814
## Univariable Cox Proportional Hazard Model for: HISPANIC
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
HISPANICYes 0.03394 1.03453 0.41606 0.082 0.935
HISPANICUnknown -0.51101 0.59989 0.38608 -1.324 0.186
exp(coef) exp(-coef) lower .95 upper .95
HISPANICYes 1.0345 0.9666 0.4577 2.338
HISPANICUnknown 0.5999 1.6670 0.2815 1.278
Concordance= 0.514 (se = 0.011 )
Rsquare= 0.006 (max possible= 0.997 )
Likelihood ratio test= 2.08 on 2 df, p=0.3542
Wald test = 1.77 on 2 df, p=0.4131
Score (logrank) test = 1.81 on 2 df, p=0.4052
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: HISPANIC



Insurance Status
uni_var(test_var = "INSURANCE_F", data_imp = data)
_________________________________________________
## INSURANCE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n events median 0.95LCL 0.95UCL
INSURANCE_F=Private 117 52 63.3 43.43 NA
INSURANCE_F=None 11 7 27.2 5.06 NA
INSURANCE_F=Medicaid 19 13 31.5 21.59 NA
INSURANCE_F=Medicare 181 112 31.1 25.89 37.5
INSURANCE_F=Other Government 2 2 38.1 34.30 NA
INSURANCE_F=Unknown 4 1 NA 17.51 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
INSURANCE_F=Private
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 89 12 0.889 0.0303 0.831 0.950
24 72 12 0.764 0.0423 0.686 0.852
36 52 13 0.621 0.0496 0.531 0.727
48 41 4 0.568 0.0520 0.475 0.680
60 31 3 0.522 0.0542 0.426 0.640
120 6 7 0.339 0.0738 0.221 0.519
INSURANCE_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 5 0.530 0.155 0.2992 0.940
24 3 0 0.530 0.155 0.2992 0.940
36 2 1 0.354 0.177 0.1322 0.946
48 2 0 0.354 0.177 0.1322 0.946
60 1 1 0.177 0.153 0.0323 0.967
120 1 0 0.177 0.153 0.0323 0.967
INSURANCE_F=Medicaid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 4 0.780 0.0972 0.6111 0.996
24 9 5 0.502 0.1178 0.3164 0.795
36 5 2 0.366 0.1193 0.1930 0.693
48 4 0 0.366 0.1193 0.1930 0.693
60 3 1 0.274 0.1195 0.1168 0.644
120 1 1 0.137 0.1139 0.0269 0.698
INSURANCE_F=Medicare
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 123 39 0.771 0.0323 0.7100 0.837
24 86 26 0.597 0.0391 0.5249 0.679
36 60 19 0.459 0.0410 0.3851 0.547
48 34 13 0.350 0.0411 0.2783 0.441
60 20 9 0.247 0.0410 0.1788 0.343
120 2 6 0.148 0.0403 0.0869 0.252
INSURANCE_F=Other Government
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 2 0 1.0 0.000 1.000 1
36 1 1 0.5 0.354 0.125 1
INSURANCE_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1.00 0.000 1.000 1
24 3 1 0.75 0.217 0.426 1
36 2 0 0.75 0.217 0.426 1
48 2 0 0.75 0.217 0.426 1
60 2 0 0.75 0.217 0.426 1
## Univariable Cox Proportional Hazard Model for: INSURANCE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
INSURANCE_FNone 1.0035 2.7278 0.4037 2.486 0.012927 *
INSURANCE_FMedicaid 0.6129 1.8458 0.3108 1.972 0.048567 *
INSURANCE_FMedicare 0.6186 1.8563 0.1691 3.659 0.000254 ***
INSURANCE_FOther Government 0.7457 2.1079 0.7223 1.032 0.301889
INSURANCE_FUnknown -0.8503 0.4273 1.0098 -0.842 0.399750
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
INSURANCE_FNone 2.7278 0.3666 1.23648 6.018
INSURANCE_FMedicaid 1.8458 0.5418 1.00386 3.394
INSURANCE_FMedicare 1.8563 0.5387 1.33270 2.586
INSURANCE_FOther Government 2.1079 0.4744 0.51172 8.683
INSURANCE_FUnknown 0.4273 2.3405 0.05904 3.092
Concordance= 0.581 (se = 0.021 )
Rsquare= 0.057 (max possible= 0.997 )
Likelihood ratio test= 19.57 on 5 df, p=0.001505
Wald test = 17.82 on 5 df, p=0.003178
Score (logrank) test = 18.74 on 5 df, p=0.002153
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: INSURANCE_F



Income
class(data$INCOME_F)
[1] "factor"
uni_var(test_var = "INCOME_F", data_imp = data)
_________________________________________________
## INCOME_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INCOME_F, data = data)
2 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
INCOME_F=Less than $38,000 63 38 37.5 30.9 63.3
INCOME_F=$38,000 - $47,999 68 34 47.0 28.2 NA
INCOME_F=$48,000 - $62,999 87 52 33.5 24.4 48.2
INCOME_F=$63,000 + 114 62 35.2 28.0 54.4
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INCOME_F, data = data)
2 observations deleted due to missingness
INCOME_F=Less than $38,000
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 42 16 0.739 0.0563 0.637 0.858
24 36 3 0.683 0.0606 0.574 0.813
36 28 6 0.564 0.0668 0.447 0.711
48 20 5 0.461 0.0687 0.344 0.617
60 14 3 0.383 0.0704 0.267 0.549
120 2 5 0.222 0.0695 0.121 0.410
INCOME_F=$38,000 - $47,999
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 47 12 0.807 0.0502 0.715 0.912
24 37 5 0.715 0.0591 0.608 0.840
36 26 9 0.540 0.0676 0.422 0.690
48 19 2 0.493 0.0695 0.374 0.650
60 15 2 0.439 0.0715 0.319 0.604
120 2 3 0.244 0.0967 0.112 0.531
INCOME_F=$48,000 - $62,999
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 66 14 0.831 0.0411 0.755 0.916
24 45 17 0.604 0.0558 0.504 0.723
36 29 9 0.475 0.0582 0.374 0.604
48 19 6 0.371 0.0590 0.271 0.507
60 12 4 0.284 0.0593 0.189 0.428
120 4 2 0.237 0.0581 0.147 0.383
INCOME_F=$63,000 +
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 80 18 0.830 0.0367 0.761 0.905
24 56 19 0.625 0.0494 0.535 0.729
36 39 11 0.493 0.0527 0.400 0.608
48 25 5 0.422 0.0539 0.329 0.542
60 16 5 0.332 0.0556 0.239 0.461
120 2 4 0.218 0.0601 0.127 0.374
## Univariable Cox Proportional Hazard Model for: INCOME_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INCOME_F, data = data)
n= 332, number of events= 186
(2 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
INCOME_F$38,000 - $47,999 -0.13646 0.87244 0.23617 -0.578 0.563
INCOME_F$48,000 - $62,999 0.08700 1.09090 0.21393 0.407 0.684
INCOME_F$63,000 + 0.04258 1.04350 0.20663 0.206 0.837
exp(coef) exp(-coef) lower .95 upper .95
INCOME_F$38,000 - $47,999 0.8724 1.1462 0.5492 1.386
INCOME_F$48,000 - $62,999 1.0909 0.9167 0.7173 1.659
INCOME_F$63,000 + 1.0435 0.9583 0.6960 1.564
Concordance= 0.513 (se = 0.023 )
Rsquare= 0.003 (max possible= 0.997 )
Likelihood ratio test= 1.13 on 3 df, p=0.7696
Wald test = 1.1 on 3 df, p=0.777
Score (logrank) test = 1.1 on 3 df, p=0.7762
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: INCOME_F



Education
uni_var(test_var = "EDUCATION_F", data_imp = data)
_________________________________________________
## EDUCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
EDUCATION_F=21% or more 48 26 43.4 27.2 NA
EDUCATION_F=13 - 20.9% 78 49 30.5 25.4 47.0
EDUCATION_F=7 - 12.9% 105 61 34.4 25.6 48.0
EDUCATION_F=Less than 7% 102 50 53.8 35.2 65.4
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
1 observation deleted due to missingness
EDUCATION_F=21% or more
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 33 10 0.779 0.0619 0.667 0.910
24 26 5 0.656 0.0726 0.528 0.815
36 20 3 0.573 0.0778 0.439 0.747
48 14 3 0.480 0.0816 0.344 0.670
60 6 4 0.309 0.0886 0.176 0.542
120 2 0 0.309 0.0886 0.176 0.542
EDUCATION_F=13 - 20.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 53 20 0.738 0.0505 0.645 0.843
24 41 8 0.618 0.0573 0.515 0.741
36 26 11 0.446 0.0606 0.341 0.582
48 17 5 0.352 0.0608 0.251 0.494
60 14 1 0.332 0.0606 0.232 0.475
120 2 4 0.197 0.0664 0.101 0.381
EDUCATION_F=7 - 12.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 74 19 0.805 0.0403 0.729 0.888
24 53 17 0.612 0.0511 0.519 0.720
36 36 12 0.465 0.0537 0.371 0.583
48 25 6 0.381 0.0538 0.289 0.503
60 21 3 0.335 0.0536 0.245 0.458
120 4 4 0.219 0.0619 0.126 0.381
EDUCATION_F=Less than 7%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 75 11 0.883 0.0333 0.820 0.950
24 54 14 0.708 0.0497 0.617 0.813
36 40 9 0.587 0.0553 0.488 0.706
48 27 4 0.523 0.0579 0.421 0.649
60 16 6 0.394 0.0634 0.287 0.540
120 2 6 0.195 0.0664 0.101 0.380
## Univariable Cox Proportional Hazard Model for: EDUCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
n= 333, number of events= 186
(1 observation deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
EDUCATION_F13 - 20.9% 0.21468 1.23947 0.24295 0.884 0.377
EDUCATION_F7 - 12.9% 0.09272 1.09715 0.23465 0.395 0.693
EDUCATION_FLess than 7% -0.08876 0.91507 0.24212 -0.367 0.714
exp(coef) exp(-coef) lower .95 upper .95
EDUCATION_F13 - 20.9% 1.2395 0.8068 0.7699 1.995
EDUCATION_F7 - 12.9% 1.0972 0.9115 0.6927 1.738
EDUCATION_FLess than 7% 0.9151 1.0928 0.5693 1.471
Concordance= 0.549 (se = 0.023 )
Rsquare= 0.007 (max possible= 0.997 )
Likelihood ratio test= 2.43 on 3 df, p=0.4884
Wald test = 2.43 on 3 df, p=0.4882
Score (logrank) test = 2.44 on 3 df, p=0.486
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: EDUCATION_F



Urban/Rural
uni_var(test_var = "U_R_F", data_imp = data)
_________________________________________________
## U_R_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
14 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
U_R_F=Metro 278 158 36.7 32.5 47
U_R_F=Urban 39 18 61.4 25.8 NA
U_R_F=Rural 3 2 16.9 10.6 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
14 observations deleted due to missingness
U_R_F=Metro
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 201 48 0.816 0.0240 0.771 0.865
24 152 35 0.667 0.0301 0.611 0.729
36 103 33 0.514 0.0330 0.454 0.583
48 69 17 0.423 0.0338 0.362 0.495
60 46 14 0.330 0.0344 0.269 0.405
120 9 10 0.224 0.0377 0.161 0.312
U_R_F=Urban
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 26 8 0.783 0.0683 0.660 0.929
24 19 4 0.653 0.0823 0.510 0.836
36 16 2 0.580 0.0877 0.432 0.780
48 13 1 0.544 0.0894 0.394 0.751
60 10 0 0.544 0.0894 0.394 0.751
120 1 3 0.282 0.1340 0.111 0.715
U_R_F=Rural
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12.000 1.000 1.000 0.500 0.354 0.125 1.000
## Univariable Cox Proportional Hazard Model for: U_R_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
n= 320, number of events= 178
(14 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
U_R_FUrban -0.2387 0.7876 0.2491 -0.958 0.338
U_R_FRural 1.0499 2.8574 0.7160 1.466 0.143
exp(coef) exp(-coef) lower .95 upper .95
U_R_FUrban 0.7876 1.27 0.4834 1.283
U_R_FRural 2.8574 0.35 0.7023 11.625
Concordance= 0.509 (se = 0.014 )
Rsquare= 0.008 (max possible= 0.996 )
Likelihood ratio test= 2.63 on 2 df, p=0.2691
Wald test = 3.17 on 2 df, p=0.2051
Score (logrank) test = 3.4 on 2 df, p=0.1823
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: U_R_F



Year
uni_var(test_var = "YEAR_OF_DIAGNOSIS", data_imp = data)
_________________________________________________
## YEAR_OF_DIAGNOSIS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n events median 0.95LCL 0.95UCL
YEAR_OF_DIAGNOSIS=2004 14 11 29.9 23.2 NA
YEAR_OF_DIAGNOSIS=2005 12 8 27.9 11.6 NA
YEAR_OF_DIAGNOSIS=2006 20 12 40.2 23.2 NA
YEAR_OF_DIAGNOSIS=2007 22 16 31.1 22.7 66.2
YEAR_OF_DIAGNOSIS=2008 22 19 35.2 23.2 84.1
YEAR_OF_DIAGNOSIS=2009 27 21 35.0 30.8 73.5
YEAR_OF_DIAGNOSIS=2010 35 22 28.2 20.2 NA
YEAR_OF_DIAGNOSIS=2011 34 18 48.7 24.4 NA
YEAR_OF_DIAGNOSIS=2012 29 14 48.2 34.3 NA
YEAR_OF_DIAGNOSIS=2013 32 14 43.4 30.2 NA
YEAR_OF_DIAGNOSIS=2014 39 12 NA 21.8 NA
YEAR_OF_DIAGNOSIS=2015 48 20 26.6 20.3 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
YEAR_OF_DIAGNOSIS=2004
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 12 2 0.857 0.0935 0.6921 1.000
24 9 3 0.643 0.1281 0.4351 0.950
36 6 3 0.429 0.1323 0.2341 0.785
48 5 1 0.357 0.1281 0.1769 0.721
60 4 1 0.286 0.1207 0.1248 0.654
120 3 1 0.214 0.1097 0.0786 0.584
YEAR_OF_DIAGNOSIS=2005
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 4 0.656 0.140 0.432 0.997
24 6 1 0.562 0.148 0.336 0.943
36 5 1 0.469 0.150 0.250 0.879
48 3 1 0.352 0.152 0.151 0.819
60 3 0 0.352 0.152 0.151 0.819
120 3 0 0.352 0.152 0.151 0.819
YEAR_OF_DIAGNOSIS=2006
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 16 3 0.844 0.0826 0.697 1.000
24 12 4 0.633 0.1104 0.450 0.891
36 10 2 0.528 0.1145 0.345 0.807
48 8 2 0.422 0.1134 0.249 0.715
60 8 0 0.422 0.1134 0.249 0.715
120 3 1 0.362 0.1121 0.197 0.664
YEAR_OF_DIAGNOSIS=2007
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 15 5 0.756 0.0950 0.5912 0.967
24 10 5 0.504 0.1117 0.3266 0.778
36 9 1 0.454 0.1114 0.2805 0.734
48 7 2 0.353 0.1070 0.1948 0.640
60 4 2 0.242 0.0985 0.1090 0.538
120 1 1 0.182 0.0906 0.0682 0.483
YEAR_OF_DIAGNOSIS=2008
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 18 3 0.857 0.0764 0.720 1.000
24 14 4 0.667 0.1029 0.493 0.902
36 10 4 0.476 0.1090 0.304 0.746
48 8 2 0.381 0.1060 0.221 0.657
60 7 1 0.333 0.1029 0.182 0.610
YEAR_OF_DIAGNOSIS=2009
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 22 5 0.815 0.0748 0.681 0.975
24 21 1 0.778 0.0800 0.636 0.952
36 13 8 0.481 0.0962 0.326 0.712
48 11 2 0.407 0.0946 0.259 0.642
60 8 2 0.333 0.0907 0.196 0.568
YEAR_OF_DIAGNOSIS=2010
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 23 9 0.731 0.0770 0.595 0.899
24 17 5 0.566 0.0882 0.417 0.768
36 14 3 0.466 0.0895 0.320 0.679
48 11 2 0.400 0.0883 0.259 0.616
60 10 1 0.363 0.0874 0.227 0.582
YEAR_OF_DIAGNOSIS=2011
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 4 0.868 0.0617 0.755 0.997
24 19 6 0.659 0.0877 0.508 0.856
36 15 3 0.555 0.0922 0.401 0.769
48 13 1 0.518 0.0932 0.364 0.737
60 8 3 0.383 0.0966 0.233 0.628
YEAR_OF_DIAGNOSIS=2012
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 20 3 0.871 0.0695 0.745 1.000
24 17 3 0.741 0.0912 0.582 0.943
36 15 2 0.653 0.0991 0.485 0.880
48 11 3 0.523 0.1041 0.354 0.772
60 5 3 0.374 0.1043 0.217 0.646
YEAR_OF_DIAGNOSIS=2013
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 22 6 0.806 0.0715 0.677 0.959
24 19 1 0.768 0.0777 0.629 0.936
36 14 4 0.603 0.0952 0.443 0.822
48 6 2 0.495 0.1052 0.326 0.751
YEAR_OF_DIAGNOSIS=2014
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 6 0.830 0.0637 0.714 0.965
24 18 5 0.650 0.0871 0.500 0.845
36 11 1 0.614 0.0894 0.461 0.816
YEAR_OF_DIAGNOSIS=2015
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 31 10 0.774 0.0632 0.659 0.908
24 13 6 0.590 0.0819 0.450 0.775
## Univariable Cox Proportional Hazard Model for: YEAR_OF_DIAGNOSIS
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
YEAR_OF_DIAGNOSIS2005 0.00927 1.00931 0.46533 0.020 0.984
YEAR_OF_DIAGNOSIS2006 -0.26811 0.76482 0.42045 -0.638 0.524
YEAR_OF_DIAGNOSIS2007 0.22180 1.24832 0.39468 0.562 0.574
YEAR_OF_DIAGNOSIS2008 0.16927 1.18444 0.38198 0.443 0.658
YEAR_OF_DIAGNOSIS2009 0.01274 1.01283 0.37581 0.034 0.973
YEAR_OF_DIAGNOSIS2010 0.04817 1.04935 0.37366 0.129 0.897
YEAR_OF_DIAGNOSIS2011 -0.15163 0.85931 0.38705 -0.392 0.695
YEAR_OF_DIAGNOSIS2012 -0.20000 0.81873 0.40757 -0.491 0.624
YEAR_OF_DIAGNOSIS2013 -0.16739 0.84587 0.40816 -0.410 0.682
YEAR_OF_DIAGNOSIS2014 -0.29756 0.74262 0.42348 -0.703 0.482
YEAR_OF_DIAGNOSIS2015 0.34220 1.40804 0.38516 0.888 0.374
exp(coef) exp(-coef) lower .95 upper .95
YEAR_OF_DIAGNOSIS2005 1.0093 0.9908 0.4054 2.513
YEAR_OF_DIAGNOSIS2006 0.7648 1.3075 0.3355 1.744
YEAR_OF_DIAGNOSIS2007 1.2483 0.8011 0.5759 2.706
YEAR_OF_DIAGNOSIS2008 1.1844 0.8443 0.5602 2.504
YEAR_OF_DIAGNOSIS2009 1.0128 0.9873 0.4849 2.116
YEAR_OF_DIAGNOSIS2010 1.0493 0.9530 0.5045 2.183
YEAR_OF_DIAGNOSIS2011 0.8593 1.1637 0.4024 1.835
YEAR_OF_DIAGNOSIS2012 0.8187 1.2214 0.3683 1.820
YEAR_OF_DIAGNOSIS2013 0.8459 1.1822 0.3801 1.882
YEAR_OF_DIAGNOSIS2014 0.7426 1.3466 0.3238 1.703
YEAR_OF_DIAGNOSIS2015 1.4080 0.7102 0.6619 2.995
Concordance= 0.549 (se = 0.023 )
Rsquare= 0.02 (max possible= 0.997 )
Likelihood ratio test= 6.83 on 11 df, p=0.8127
Wald test = 6.91 on 11 df, p=0.8065
Score (logrank) test = 7.02 on 11 df, p=0.7978
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: YEAR_OF_DIAGNOSIS
This manual palette can handle a maximum of 10 values. You have supplied 12.



Primary Site
uni_var(test_var = "SITE_TEXT", data_imp = data)
_________________________________________________
## SITE_TEXT
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n events median 0.95LCL 0.95UCL
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face 1 0 NA NA NA
SITE_TEXT=C44.4 Skin of scalp and neck 1 0 NA NA NA
SITE_TEXT=C44.5 Skin of trunk 13 9 31.1 27.2 NA
SITE_TEXT=C44.6 Skin of upper limb and shoulder 5 5 17.4 10.6 NA
SITE_TEXT=C44.7 Skin of lower limb and hip 8 2 NA 36.2 NA
SITE_TEXT=C44.8 Overlapping lesion of skin 54 33 35.2 28.2 53.8
SITE_TEXT=C44.9 Skin, NOS 252 138 36.7 28.4 52.0
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
SITE_TEXT=C44.4 Skin of scalp and neck
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
SITE_TEXT=C44.5 Skin of trunk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 3 0.755 0.123 0.5486 1.000
24 7 0 0.755 0.123 0.5486 1.000
36 2 4 0.324 0.151 0.1299 0.807
48 1 1 0.162 0.137 0.0308 0.851
SITE_TEXT=C44.6 Skin of upper limb and shoulder
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 2 0.6 0.219 0.2933 1
24 2 1 0.4 0.219 0.1367 1
36 2 0 0.4 0.219 0.1367 1
48 2 0 0.4 0.219 0.1367 1
60 1 1 0.2 0.179 0.0346 1
SITE_TEXT=C44.7 Skin of lower limb and hip
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 0 1.000 0.000 1.000 1
24 7 0 1.000 0.000 1.000 1
36 6 1 0.857 0.132 0.633 1
48 3 1 0.714 0.171 0.447 1
60 3 0 0.714 0.171 0.447 1
120 1 0 0.714 0.171 0.447 1
SITE_TEXT=C44.8 Overlapping lesion of skin
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 41 10 0.805 0.0555 0.703 0.921
24 33 7 0.666 0.0663 0.548 0.809
36 23 8 0.495 0.0716 0.373 0.658
48 16 3 0.430 0.0715 0.310 0.595
60 8 5 0.286 0.0713 0.175 0.466
120 2 0 0.286 0.0713 0.175 0.466
SITE_TEXT=C44.9 Skin, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 174 45 0.810 0.0256 0.761 0.861
24 124 36 0.632 0.0330 0.570 0.700
36 87 23 0.509 0.0352 0.444 0.583
48 59 13 0.427 0.0362 0.361 0.504
60 43 7 0.369 0.0373 0.303 0.450
120 7 13 0.202 0.0437 0.132 0.309
## Univariable Cox Proportional Hazard Model for: SITE_TEXT
Loglik converged before variable 1,2,3,4,5,6 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
SITE_TEXTC44.4 Skin of scalp and neck -2.587e-03 9.974e-01 3.826e+03 0.000 1.000
SITE_TEXTC44.5 Skin of trunk 1.653e+01 1.515e+07 2.740e+03 0.006 0.995
SITE_TEXTC44.6 Skin of upper limb and shoulder 1.663e+01 1.666e+07 2.740e+03 0.006 0.995
SITE_TEXTC44.7 Skin of lower limb and hip 1.480e+01 2.680e+06 2.740e+03 0.005 0.996
SITE_TEXTC44.8 Overlapping lesion of skin 1.604e+01 9.276e+06 2.740e+03 0.006 0.995
SITE_TEXTC44.9 Skin, NOS 1.606e+01 9.434e+06 2.740e+03 0.006 0.995
exp(coef) exp(-coef) lower .95 upper .95
SITE_TEXTC44.4 Skin of scalp and neck 9.974e-01 1.003e+00 0 Inf
SITE_TEXTC44.5 Skin of trunk 1.515e+07 6.600e-08 0 Inf
SITE_TEXTC44.6 Skin of upper limb and shoulder 1.666e+07 6.001e-08 0 Inf
SITE_TEXTC44.7 Skin of lower limb and hip 2.680e+06 3.731e-07 0 Inf
SITE_TEXTC44.8 Overlapping lesion of skin 9.276e+06 1.078e-07 0 Inf
SITE_TEXTC44.9 Skin, NOS 9.434e+06 1.060e-07 0 Inf
Concordance= 0.53 (se = 0.018 )
Rsquare= 0.039 (max possible= 0.997 )
Likelihood ratio test= 13.18 on 6 df, p=0.04031
Wald test = 6.7 on 6 df, p=0.3498
Score (logrank) test = 9.97 on 6 df, p=0.126
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SITE_TEXT



Histology
#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)
Behavior
uni_var(test_var = "BEHAVIOR", data_imp = data)
_________________________________________________
## BEHAVIOR
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ BEHAVIOR, data = data)
n events median 0.95LCL 0.95UCL
334.0 187.0 36.5 31.1 44.7
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ BEHAVIOR, data = data)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 236 60 0.808 0.0223 0.766 0.853
24 175 44 0.649 0.0280 0.597 0.707
36 122 36 0.509 0.0302 0.453 0.572
48 83 18 0.428 0.0309 0.371 0.493
60 57 14 0.349 0.0317 0.292 0.417
120 10 14 0.224 0.0353 0.164 0.305
## Univariable Cox Proportional Hazard Model for: BEHAVIOR
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: BEHAVIOR



Grade
#uni_var(test_var = "GRADE_F", data_imp = data)
Clinical T Stage
uni_var(test_var = "TNM_CLIN_T", data_imp = data)
_________________________________________________
## TNM_CLIN_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_T, data = data)
13 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_CLIN_T=N_A 4 3 25.3 2.23 NA
TNM_CLIN_T=c1 19 7 53.8 25.63 NA
TNM_CLIN_T=c2 22 10 34.3 25.89 NA
TNM_CLIN_T=c2B 1 0 NA NA NA
TNM_CLIN_T=c3 23 12 30.5 22.01 NA
TNM_CLIN_T=c4 149 76 36.7 28.29 61.4
TNM_CLIN_T=cX 103 74 36.5 30.75 48.0
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_T, data = data)
13 observations deleted due to missingness
TNM_CLIN_T=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 1 0.75 0.217 0.426 1
24 2 1 0.50 0.250 0.188 1
TNM_CLIN_T=c1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 4 0.759 0.106 0.578 0.997
24 8 0 0.759 0.106 0.578 0.997
36 6 1 0.664 0.128 0.455 0.969
48 5 0 0.664 0.128 0.455 0.969
60 2 2 0.332 0.178 0.116 0.949
TNM_CLIN_T=c2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 19 2 0.905 0.0641 0.788 1.000
24 14 4 0.704 0.1017 0.530 0.934
36 7 4 0.474 0.1178 0.291 0.771
48 4 0 0.474 0.1178 0.291 0.771
60 3 0 0.474 0.1178 0.291 0.771
TNM_CLIN_T=c2B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
TNM_CLIN_T=c3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 16 1 0.957 0.0425 0.8767 1.000
24 10 6 0.598 0.1188 0.4050 0.882
36 7 2 0.478 0.1214 0.2908 0.787
48 4 1 0.399 0.1246 0.2159 0.736
60 1 2 0.133 0.1162 0.0239 0.737
TNM_CLIN_T=c4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 101 29 0.789 0.0349 0.724 0.861
24 73 18 0.639 0.0426 0.561 0.728
36 50 13 0.519 0.0459 0.436 0.617
48 30 6 0.452 0.0474 0.368 0.555
60 19 4 0.387 0.0509 0.299 0.500
TNM_CLIN_T=cX
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 79 19 0.808 0.0396 0.734 0.889
24 64 15 0.655 0.0480 0.567 0.756
36 49 15 0.501 0.0505 0.411 0.611
48 38 10 0.397 0.0496 0.311 0.507
60 30 6 0.333 0.0480 0.251 0.442
120 10 8 0.233 0.0454 0.159 0.341
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_T
Loglik converged before variable 3 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_T, data = data)
n= 321, number of events= 182
(13 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_Tc1 -8.955e-01 4.084e-01 6.916e-01 -1.295 0.195
TNM_CLIN_Tc2 -8.989e-01 4.070e-01 6.592e-01 -1.364 0.173
TNM_CLIN_Tc2B -1.372e+01 1.096e-06 1.390e+03 -0.010 0.992
TNM_CLIN_Tc3 -5.941e-01 5.521e-01 6.466e-01 -0.919 0.358
TNM_CLIN_Tc4 -6.864e-01 5.034e-01 5.900e-01 -1.163 0.245
TNM_CLIN_TcX -7.241e-01 4.848e-01 5.929e-01 -1.221 0.222
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_Tc1 4.084e-01 2.448e+00 0.1053 1.584
TNM_CLIN_Tc2 4.070e-01 2.457e+00 0.1118 1.482
TNM_CLIN_Tc2B 1.096e-06 9.121e+05 0.0000 Inf
TNM_CLIN_Tc3 5.521e-01 1.811e+00 0.1555 1.960
TNM_CLIN_Tc4 5.034e-01 1.987e+00 0.1584 1.600
TNM_CLIN_TcX 4.848e-01 2.063e+00 0.1516 1.550
Concordance= 0.514 (se = 0.022 )
Rsquare= 0.008 (max possible= 0.997 )
Likelihood ratio test= 2.52 on 6 df, p=0.8666
Wald test = 2.31 on 6 df, p=0.8894
Score (logrank) test = 2.62 on 6 df, p=0.8552
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_T



Clinical N Stage
uni_var(test_var = "TNM_CLIN_N", data_imp = data)
_________________________________________________
## TNM_CLIN_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_N, data = data)
12 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_CLIN_N=N_A 4 3 25.3 2.23 NA
TNM_CLIN_N=c0 104 50 53.8 28.16 61.4
TNM_CLIN_N=c1 42 24 33.5 21.68 NA
TNM_CLIN_N=c1A 2 1 23.2 23.16 NA
TNM_CLIN_N=c1B 4 2 43.4 5.88 NA
TNM_CLIN_N=c2 10 4 36.7 13.24 NA
TNM_CLIN_N=c2B 2 1 48.2 NA NA
TNM_CLIN_N=c3 17 9 21.7 10.61 NA
TNM_CLIN_N=cX 137 89 36.5 30.75 44.7
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_N, data = data)
12 observations deleted due to missingness
TNM_CLIN_N=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 1 0.75 0.217 0.426 1
24 2 1 0.50 0.250 0.188 1
TNM_CLIN_N=c0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 74 14 0.850 0.0371 0.781 0.926
24 56 13 0.694 0.0495 0.604 0.798
36 34 12 0.537 0.0555 0.438 0.657
48 27 2 0.503 0.0568 0.404 0.628
60 16 6 0.369 0.0628 0.265 0.516
TNM_CLIN_N=c1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 28 9 0.768 0.0680 0.646 0.914
24 20 6 0.591 0.0823 0.450 0.776
36 15 4 0.473 0.0844 0.333 0.671
48 9 0 0.473 0.0844 0.333 0.671
60 5 2 0.368 0.0928 0.224 0.603
TNM_CLIN_N=c1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 1 1 0.5 0.354 0.125 1
36 1 0 0.5 0.354 0.125 1
48 1 0 0.5 0.354 0.125 1
60 1 0 0.5 0.354 0.125 1
TNM_CLIN_N=c1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 1 0.750 0.217 0.4259 1
24 2 0 0.750 0.217 0.4259 1
36 2 0 0.750 0.217 0.4259 1
48 1 1 0.375 0.286 0.0839 1
60 1 0 0.375 0.286 0.0839 1
TNM_CLIN_N=c2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 1 0.9 0.0949 0.732 1
24 4 2 0.6 0.1844 0.329 1
36 3 0 0.6 0.1844 0.329 1
48 1 1 0.4 0.2044 0.147 1
60 1 0 0.4 0.2044 0.147 1
TNM_CLIN_N=c2B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
TNM_CLIN_N=c3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 6 0.637 0.119 0.442 0.918
24 5 2 0.465 0.136 0.262 0.825
36 2 1 0.310 0.156 0.116 0.830
48 1 0 0.310 0.156 0.116 0.830
TNM_CLIN_N=cX
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 101 25 0.809 0.0345 0.744 0.879
24 79 19 0.653 0.0424 0.575 0.742
36 60 18 0.503 0.0451 0.422 0.600
48 39 13 0.387 0.0448 0.308 0.486
60 30 5 0.334 0.0445 0.257 0.434
120 10 8 0.234 0.0437 0.162 0.337
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_N
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_N, data = data)
n= 322, number of events= 183
(12 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_Nc0 -0.8149 0.4427 0.5961 -1.367 0.172
TNM_CLIN_Nc1 -0.5614 0.5704 0.6138 -0.915 0.360
TNM_CLIN_Nc1A -1.2340 0.2911 1.1571 -1.066 0.286
TNM_CLIN_Nc1B -0.8953 0.4085 0.9148 -0.979 0.328
TNM_CLIN_Nc2 -0.7491 0.4728 0.7646 -0.980 0.327
TNM_CLIN_Nc2B -1.0695 0.3432 1.1555 -0.926 0.355
TNM_CLIN_Nc3 -0.2005 0.8183 0.6673 -0.300 0.764
TNM_CLIN_NcX -0.7257 0.4840 0.5901 -1.230 0.219
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_Nc0 0.4427 2.259 0.13762 1.424
TNM_CLIN_Nc1 0.5704 1.753 0.17128 1.900
TNM_CLIN_Nc1A 0.2911 3.435 0.03014 2.812
TNM_CLIN_Nc1B 0.4085 2.448 0.06800 2.454
TNM_CLIN_Nc2 0.4728 2.115 0.10565 2.116
TNM_CLIN_Nc2B 0.3432 2.914 0.03565 3.304
TNM_CLIN_Nc3 0.8183 1.222 0.22129 3.026
TNM_CLIN_NcX 0.4840 2.066 0.15223 1.539
Concordance= 0.543 (se = 0.022 )
Rsquare= 0.015 (max possible= 0.997 )
Likelihood ratio test= 4.79 on 8 df, p=0.7801
Wald test = 5.3 on 8 df, p=0.7246
Score (logrank) test = 5.46 on 8 df, p=0.7077
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_N



Clinical M Stage
uni_var(test_var = "TNM_CLIN_M", data_imp = data)
_________________________________________________
## TNM_CLIN_M
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_M, data = data)
22 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_CLIN_M=N_A 4 3 25.3 2.23 NA
TNM_CLIN_M=c0 281 162 36.5 30.65 47
TNM_CLIN_M=c1 27 13 37.5 30.52 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_M, data = data)
22 observations deleted due to missingness
TNM_CLIN_M=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 1 0.75 0.217 0.426 1
24 2 1 0.50 0.250 0.188 1
TNM_CLIN_M=c0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 196 50 0.809 0.0244 0.762 0.858
24 148 39 0.642 0.0307 0.585 0.705
36 105 31 0.502 0.0328 0.442 0.571
48 72 15 0.424 0.0334 0.363 0.494
60 48 13 0.339 0.0340 0.279 0.413
120 10 13 0.220 0.0360 0.160 0.303
TNM_CLIN_M=c1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 22 4 0.849 0.0697 0.723 0.997
24 16 2 0.759 0.0867 0.607 0.949
36 9 3 0.598 0.1076 0.420 0.851
48 5 2 0.465 0.1178 0.283 0.764
60 3 1 0.372 0.1257 0.192 0.721
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_M
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_M, data = data)
n= 312, number of events= 178
(22 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_Mc0 -0.7126 0.4904 0.5849 -1.218 0.223
TNM_CLIN_Mc1 -0.8222 0.4394 0.6414 -1.282 0.200
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_Mc0 0.4904 2.039 0.1558 1.543
TNM_CLIN_Mc1 0.4394 2.276 0.1250 1.545
Concordance= 0.513 (se = 0.013 )
Rsquare= 0.004 (max possible= 0.997 )
Likelihood ratio test= 1.38 on 2 df, p=0.5023
Wald test = 1.67 on 2 df, p=0.4339
Score (logrank) test = 1.74 on 2 df, p=0.4193
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_M



Clinical Stage Group
uni_var(test_var = "TNM_CLIN_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_CLIN_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n events median 0.95LCL 0.95UCL
TNM_CLIN_STAGE_GROUP=1 5 2 NA 56.64 NA
TNM_CLIN_STAGE_GROUP=1A 12 6 53.8 25.63 NA
TNM_CLIN_STAGE_GROUP=1B 13 7 25.9 16.26 NA
TNM_CLIN_STAGE_GROUP=2 1 1 31.5 NA NA
TNM_CLIN_STAGE_GROUP=2A 5 0 NA NA NA
TNM_CLIN_STAGE_GROUP=2B 14 7 30.9 20.30 NA
TNM_CLIN_STAGE_GROUP=3 13 8 27.4 17.51 NA
TNM_CLIN_STAGE_GROUP=3A 35 18 35.2 25.36 NA
TNM_CLIN_STAGE_GROUP=3B 29 20 22.7 13.86 NA
TNM_CLIN_STAGE_GROUP=4 28 18 39.2 27.79 NA
TNM_CLIN_STAGE_GROUP=4A 35 23 37.4 27.20 57.1
TNM_CLIN_STAGE_GROUP=4A1 46 21 59.4 28.35 NA
TNM_CLIN_STAGE_GROUP=4A2 12 6 21.7 5.52 NA
TNM_CLIN_STAGE_GROUP=4B 30 18 37.5 33.54 NA
TNM_CLIN_STAGE_GROUP=N_A 3 3 16.2 2.23 NA
TNM_CLIN_STAGE_GROUP=99 53 29 47.0 22.24 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
TNM_CLIN_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 0 1.0 0.000 1.000 1
24 5 0 1.0 0.000 1.000 1
36 5 0 1.0 0.000 1.000 1
48 5 0 1.0 0.000 1.000 1
60 3 2 0.6 0.219 0.293 1
120 2 0 0.6 0.219 0.293 1
TNM_CLIN_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 1 0.900 0.0949 0.732 1.000
24 7 1 0.787 0.1340 0.564 1.000
36 5 1 0.675 0.1551 0.430 1.000
48 4 1 0.540 0.1731 0.288 1.000
60 2 1 0.360 0.1869 0.130 0.996
TNM_CLIN_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.909 0.0867 0.7541 1.000
24 6 3 0.606 0.1541 0.3682 0.998
36 1 3 0.242 0.1464 0.0742 0.792
48 1 0 0.242 0.1464 0.0742 0.792
60 1 0 0.242 0.1464 0.0742 0.792
TNM_CLIN_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=2A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 0 1 0 1 1
24 4 0 1 0 1 1
36 4 0 1 0 1 1
48 3 0 1 0 1 1
60 3 0 1 0 1 1
120 1 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=2B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 0 1.00 0.000 1.0000 1.000
24 6 4 0.60 0.155 0.3617 0.995
36 4 1 0.50 0.158 0.2690 0.929
48 2 2 0.25 0.148 0.0784 0.797
60 1 0 0.25 0.148 0.0784 0.797
TNM_CLIN_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 3 0.750 0.125 0.5410 1.000
24 6 2 0.571 0.146 0.3461 0.944
36 4 2 0.381 0.147 0.1789 0.811
48 4 0 0.381 0.147 0.1789 0.811
60 2 1 0.254 0.143 0.0845 0.764
TNM_CLIN_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 24 3 0.903 0.0534 0.8044 1.000
24 17 6 0.670 0.0911 0.5134 0.875
36 12 5 0.473 0.0981 0.3151 0.710
48 9 0 0.473 0.0981 0.3151 0.710
60 6 1 0.421 0.1003 0.2635 0.671
120 1 3 0.210 0.0994 0.0832 0.531
TNM_CLIN_STAGE_GROUP=3B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 19 9 0.679 0.0881 0.527 0.876
24 12 7 0.429 0.0936 0.280 0.658
36 10 1 0.393 0.0923 0.248 0.623
48 9 1 0.354 0.0911 0.214 0.586
60 6 0 0.354 0.0911 0.214 0.586
TNM_CLIN_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 3 0.893 0.0585 0.785 1.000
24 20 5 0.714 0.0854 0.565 0.903
36 13 5 0.527 0.0959 0.369 0.753
48 8 3 0.390 0.0985 0.238 0.640
60 8 0 0.390 0.0985 0.238 0.640
120 2 2 0.244 0.1036 0.106 0.561
TNM_CLIN_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 5 0.847 0.0631 0.732 0.980
24 19 5 0.671 0.0862 0.522 0.863
36 14 4 0.523 0.0937 0.369 0.743
48 8 4 0.367 0.0930 0.223 0.603
60 4 3 0.220 0.0869 0.102 0.477
TNM_CLIN_STAGE_GROUP=4A1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 33 6 0.861 0.0527 0.764 0.971
24 25 5 0.726 0.0712 0.599 0.880
36 15 6 0.541 0.0842 0.398 0.734
48 7 1 0.502 0.0866 0.358 0.704
60 5 2 0.359 0.1057 0.201 0.639
TNM_CLIN_STAGE_GROUP=4A2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 4 0.667 0.136 0.447 0.995
24 3 2 0.437 0.165 0.209 0.918
36 2 0 0.437 0.165 0.209 0.918
48 1 0 0.437 0.165 0.209 0.918
60 1 0 0.437 0.165 0.209 0.918
TNM_CLIN_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 21 7 0.763 0.0785 0.6234 0.933
24 18 0 0.763 0.0785 0.6234 0.933
36 13 4 0.590 0.0973 0.4272 0.815
48 8 4 0.399 0.1028 0.2413 0.661
60 5 2 0.291 0.0998 0.1488 0.570
120 1 1 0.218 0.0979 0.0908 0.526
TNM_CLIN_STAGE_GROUP=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.667 0.272 0.2995 1
24 1 1 0.333 0.272 0.0673 1
TNM_CLIN_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 30 17 0.664 0.0667 0.546 0.809
24 25 3 0.595 0.0708 0.471 0.751
36 20 2 0.544 0.0734 0.417 0.708
48 14 2 0.482 0.0771 0.352 0.660
60 10 2 0.407 0.0816 0.275 0.603
120 3 2 0.279 0.0942 0.144 0.541
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_STAGE_GROUP
Loglik converged before variable 4 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_STAGE_GROUP1A 1.087e+00 2.965e+00 8.191e-01 1.327 0.18453
TNM_CLIN_STAGE_GROUP1B 1.497e+00 4.466e+00 8.053e-01 1.858 0.06311 .
TNM_CLIN_STAGE_GROUP2 1.741e+00 5.702e+00 1.229e+00 1.417 0.15660
TNM_CLIN_STAGE_GROUP2A -1.490e+01 3.394e-07 1.378e+03 -0.011 0.99138
TNM_CLIN_STAGE_GROUP2B 1.289e+00 3.629e+00 8.061e-01 1.599 0.10981
TNM_CLIN_STAGE_GROUP3 1.354e+00 3.874e+00 7.938e-01 1.706 0.08802 .
TNM_CLIN_STAGE_GROUP3A 1.180e+00 3.254e+00 7.475e-01 1.579 0.11444
TNM_CLIN_STAGE_GROUP3B 1.456e+00 4.287e+00 7.443e-01 1.956 0.05050 .
TNM_CLIN_STAGE_GROUP4 1.024e+00 2.785e+00 7.468e-01 1.372 0.17019
TNM_CLIN_STAGE_GROUP4A 1.390e+00 4.014e+00 7.405e-01 1.877 0.06054 .
TNM_CLIN_STAGE_GROUP4A1 1.118e+00 3.059e+00 7.440e-01 1.503 0.13287
TNM_CLIN_STAGE_GROUP4A2 1.595e+00 4.926e+00 8.207e-01 1.943 0.05202 .
TNM_CLIN_STAGE_GROUP4B 1.200e+00 3.320e+00 7.472e-01 1.606 0.10829
TNM_CLIN_STAGE_GROUPN_A 2.392e+00 1.094e+01 9.183e-01 2.605 0.00919 **
TNM_CLIN_STAGE_GROUP99 1.189e+00 3.285e+00 7.325e-01 1.624 0.10444
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_STAGE_GROUP1A 2.965e+00 3.373e-01 0.5954 14.76
TNM_CLIN_STAGE_GROUP1B 4.466e+00 2.239e-01 0.9215 21.64
TNM_CLIN_STAGE_GROUP2 5.702e+00 1.754e-01 0.5129 63.40
TNM_CLIN_STAGE_GROUP2A 3.394e-07 2.946e+06 0.0000 Inf
TNM_CLIN_STAGE_GROUP2B 3.629e+00 2.756e-01 0.7476 17.62
TNM_CLIN_STAGE_GROUP3 3.874e+00 2.582e-01 0.8174 18.36
TNM_CLIN_STAGE_GROUP3A 3.254e+00 3.073e-01 0.7519 14.09
TNM_CLIN_STAGE_GROUP3B 4.287e+00 2.333e-01 0.9969 18.44
TNM_CLIN_STAGE_GROUP4 2.785e+00 3.590e-01 0.6444 12.04
TNM_CLIN_STAGE_GROUP4A 4.014e+00 2.491e-01 0.9403 17.14
TNM_CLIN_STAGE_GROUP4A1 3.059e+00 3.269e-01 0.7117 13.15
TNM_CLIN_STAGE_GROUP4A2 4.926e+00 2.030e-01 0.9862 24.61
TNM_CLIN_STAGE_GROUP4B 3.320e+00 3.012e-01 0.7676 14.36
TNM_CLIN_STAGE_GROUPN_A 1.094e+01 9.143e-02 1.8082 66.16
TNM_CLIN_STAGE_GROUP99 3.285e+00 3.044e-01 0.7817 13.81
Concordance= 0.577 (se = 0.023 )
Rsquare= 0.063 (max possible= 0.997 )
Likelihood ratio test= 21.91 on 15 df, p=0.1102
Wald test = 11.26 on 15 df, p=0.734
Score (logrank) test = 17.77 on 15 df, p=0.2749
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 16 rows containing missing values (geom_text).Removed 16 rows containing missing values (geom_text).Removed 16 rows containing missing values (geom_text).Removed 16 rows containing missing values (geom_text).Removed 16 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 16.



Pathologic T Stage
uni_var(test_var = "TNM_PATH_T", data_imp = data)
_________________________________________________
## TNM_PATH_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_T, data = data)
120 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_PATH_T=N_A 5 3 34.4 16.23 NA
TNM_PATH_T=p1 5 3 53.8 6.64 NA
TNM_PATH_T=p2 12 4 NA 26.64 NA
TNM_PATH_T=p2B 2 0 NA NA NA
TNM_PATH_T=p3 10 6 43.4 18.37 NA
TNM_PATH_T=p4 64 30 37.5 30.88 NA
TNM_PATH_T=pX 116 86 34.8 28.22 43
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_T, data = data)
120 observations deleted due to missingness
TNM_PATH_T=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 1 0.8 0.179 0.516 1
24 2 1 0.6 0.219 0.293 1
TNM_PATH_T=p1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 2 0.6 0.219 0.2933 1
24 2 0 0.6 0.219 0.2933 1
36 2 0 0.6 0.219 0.2933 1
48 2 0 0.6 0.219 0.2933 1
60 1 1 0.3 0.239 0.0631 1
TNM_PATH_T=p2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.909 0.0867 0.754 1
24 8 1 0.808 0.1225 0.600 1
36 4 2 0.577 0.1634 0.331 1
48 2 0 0.577 0.1634 0.331 1
60 1 0 0.577 0.1634 0.331 1
TNM_PATH_T=p2B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
TNM_PATH_T=p3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 1 0.900 0.0949 0.7320 1.000
24 5 3 0.562 0.1651 0.3165 1.000
36 5 0 0.562 0.1651 0.3165 1.000
48 3 1 0.450 0.1660 0.2184 0.927
60 1 1 0.225 0.1795 0.0471 1.000
TNM_PATH_T=p4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 41 13 0.771 0.0560 0.669 0.889
24 34 4 0.693 0.0625 0.581 0.827
36 26 5 0.587 0.0687 0.466 0.738
48 16 4 0.492 0.0721 0.369 0.656
60 9 2 0.423 0.0771 0.296 0.605
TNM_PATH_T=pX
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 89 22 0.803 0.0376 0.733 0.880
24 71 18 0.641 0.0455 0.558 0.736
36 52 19 0.469 0.0474 0.385 0.572
48 41 10 0.378 0.0462 0.297 0.480
60 34 5 0.331 0.0450 0.253 0.431
120 10 11 0.214 0.0411 0.147 0.312
## Univariable Cox Proportional Hazard Model for: TNM_PATH_T
Loglik converged before variable 3 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_T, data = data)
n= 214, number of events= 132
(120 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_PATH_Tp1 -3.052e-01 7.370e-01 8.196e-01 -0.372 0.710
TNM_PATH_Tp2 -9.968e-01 3.690e-01 7.651e-01 -1.303 0.193
TNM_PATH_Tp2B -1.555e+01 1.765e-07 2.757e+03 -0.006 0.995
TNM_PATH_Tp3 -4.857e-01 6.153e-01 7.099e-01 -0.684 0.494
TNM_PATH_Tp4 -6.364e-01 5.292e-01 6.082e-01 -1.046 0.295
TNM_PATH_TpX -4.613e-01 6.304e-01 5.921e-01 -0.779 0.436
exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_Tp1 7.370e-01 1.357e+00 0.14785 3.674
TNM_PATH_Tp2 3.690e-01 2.710e+00 0.08239 1.653
TNM_PATH_Tp2B 1.765e-07 5.666e+06 0.00000 Inf
TNM_PATH_Tp3 6.153e-01 1.625e+00 0.15303 2.474
TNM_PATH_Tp4 5.292e-01 1.890e+00 0.16068 1.743
TNM_PATH_TpX 6.304e-01 1.586e+00 0.19753 2.012
Concordance= 0.535 (se = 0.025 )
Rsquare= 0.016 (max possible= 0.997 )
Likelihood ratio test= 3.46 on 6 df, p=0.7486
Wald test = 2.52 on 6 df, p=0.8661
Score (logrank) test = 3.03 on 6 df, p=0.8054
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_T



Pathologic N Stage
uni_var(test_var = "TNM_PATH_N", data_imp = data)
_________________________________________________
## TNM_PATH_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_N, data = data)
108 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_PATH_N=N_A 5 3 34.4 16.23 NA
TNM_PATH_N=p0 23 9 81.6 53.78 NA
TNM_PATH_N=p1 9 5 48.7 21.68 NA
TNM_PATH_N=p1A 1 0 NA NA NA
TNM_PATH_N=p1B 2 1 43.4 NA NA
TNM_PATH_N=p2 5 2 36.7 36.67 NA
TNM_PATH_N=p3 3 2 21.7 4.11 NA
TNM_PATH_N=pX 178 112 35.2 30.65 44.7
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_N, data = data)
108 observations deleted due to missingness
TNM_PATH_N=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 1 0.8 0.179 0.516 1
24 2 1 0.6 0.219 0.293 1
TNM_PATH_N=p0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 17 2 0.905 0.0641 0.788 1.000
24 13 2 0.792 0.0935 0.628 0.998
36 11 1 0.726 0.1064 0.544 0.967
48 10 0 0.726 0.1064 0.544 0.967
60 6 3 0.508 0.1289 0.309 0.835
TNM_PATH_N=p1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 2 0.762 0.148 0.521 1
24 4 1 0.610 0.181 0.341 1
36 3 0 0.610 0.181 0.341 1
48 3 0 0.610 0.181 0.341 1
60 2 1 0.406 0.205 0.151 1
TNM_PATH_N=p1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
TNM_PATH_N=p1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
TNM_PATH_N=p2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 1 0.8 0.179 0.516 1
24 3 0 0.8 0.179 0.516 1
36 2 0 0.8 0.179 0.516 1
TNM_PATH_N=p3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.667 0.272 0.2995 1
24 1 1 0.333 0.272 0.0673 1
36 1 0 0.333 0.272 0.0673 1
TNM_PATH_N=pX
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 131 32 0.809 0.0304 0.752 0.871
24 104 25 0.653 0.0373 0.584 0.730
36 75 25 0.493 0.0396 0.422 0.577
48 54 13 0.404 0.0394 0.333 0.489
60 40 5 0.362 0.0396 0.292 0.449
120 10 11 0.240 0.0408 0.172 0.335
## Univariable Cox Proportional Hazard Model for: TNM_PATH_N
Loglik converged before variable 3 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_N, data = data)
n= 226, number of events= 134
(108 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_PATH_Np0 -1.002e+00 3.671e-01 6.705e-01 -1.495 0.135
TNM_PATH_Np1 -4.561e-01 6.338e-01 7.331e-01 -0.622 0.534
TNM_PATH_Np1A -1.561e+01 1.662e-07 1.672e+03 -0.009 0.993
TNM_PATH_Np1B -6.287e-01 5.333e-01 1.156e+00 -0.544 0.587
TNM_PATH_Np2 -6.716e-01 5.109e-01 9.140e-01 -0.735 0.462
TNM_PATH_Np3 5.693e-02 1.059e+00 9.135e-01 0.062 0.950
TNM_PATH_NpX -5.482e-01 5.780e-01 5.889e-01 -0.931 0.352
exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_Np0 3.671e-01 2.724e+00 0.09865 1.366
TNM_PATH_Np1 6.338e-01 1.578e+00 0.15062 2.667
TNM_PATH_Np1A 1.662e-07 6.018e+06 0.00000 Inf
TNM_PATH_Np1B 5.333e-01 1.875e+00 0.05532 5.140
TNM_PATH_Np2 5.109e-01 1.957e+00 0.08519 3.064
TNM_PATH_Np3 1.059e+00 9.447e-01 0.17665 6.343
TNM_PATH_NpX 5.780e-01 1.730e+00 0.18223 1.833
Concordance= 0.539 (se = 0.019 )
Rsquare= 0.026 (max possible= 0.996 )
Likelihood ratio test= 5.92 on 7 df, p=0.5489
Wald test = 3.52 on 7 df, p=0.8328
Score (logrank) test = 4.86 on 7 df, p=0.677
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 8 rows containing missing values (geom_text).Removed 8 rows containing missing values (geom_text).Removed 8 rows containing missing values (geom_text).Removed 8 rows containing missing values (geom_text).Removed 8 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_N



Pathologic M Stage
uni_var(test_var = "TNM_PATH_M", data_imp = data)
_________________________________________________
## TNM_PATH_M
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_M, data = data)
198 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_PATH_M=N_A 5 3 34.4 16.2 NA
TNM_PATH_M=p1 14 6 48.7 37.5 NA
TNM_PATH_M=pX 117 87 35.0 28.2 44.7
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_M, data = data)
198 observations deleted due to missingness
TNM_PATH_M=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 1 0.8 0.179 0.516 1
24 2 1 0.6 0.219 0.293 1
TNM_PATH_M=p1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 3 0.786 0.110 0.598 1
24 8 0 0.786 0.110 0.598 1
36 6 0 0.786 0.110 0.598 1
48 4 1 0.655 0.150 0.417 1
60 3 1 0.491 0.181 0.238 1
TNM_PATH_M=pX
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 90 22 0.805 0.0373 0.735 0.882
24 72 18 0.644 0.0452 0.561 0.739
36 53 19 0.474 0.0472 0.390 0.576
48 42 10 0.383 0.0461 0.303 0.485
60 34 6 0.327 0.0447 0.251 0.428
120 10 11 0.212 0.0408 0.145 0.309
## Univariable Cox Proportional Hazard Model for: TNM_PATH_M
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_M, data = data)
n= 136, number of events= 96
(198 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_PATH_Mp1 -0.8406 0.4315 0.7109 -1.182 0.237
TNM_PATH_MpX -0.5011 0.6058 0.5940 -0.844 0.399
exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_Mp1 0.4315 2.318 0.1071 1.738
TNM_PATH_MpX 0.6058 1.651 0.1891 1.941
Concordance= 0.521 (se = 0.019 )
Rsquare= 0.01 (max possible= 0.997 )
Likelihood ratio test= 1.39 on 2 df, p=0.4979
Wald test = 1.43 on 2 df, p=0.4891
Score (logrank) test = 1.46 on 2 df, p=0.4821
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_M



Pathologic Stage Group
uni_var(test_var = "TNM_PATH_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_PATH_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
47 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_PATH_STAGE_GROUP=1 3 1 52.04 52.04 NA
TNM_PATH_STAGE_GROUP=1A 2 2 29.71 5.65 NA
TNM_PATH_STAGE_GROUP=1B 5 1 NA 8.54 NA
TNM_PATH_STAGE_GROUP=2A 1 0 NA NA NA
TNM_PATH_STAGE_GROUP=2B 4 3 40.42 18.37 NA
TNM_PATH_STAGE_GROUP=3 3 2 5.06 3.22 NA
TNM_PATH_STAGE_GROUP=3A 6 3 32.82 20.99 NA
TNM_PATH_STAGE_GROUP=3B 9 5 33.31 21.68 NA
TNM_PATH_STAGE_GROUP=4 10 4 NA 32.46 NA
TNM_PATH_STAGE_GROUP=4A 5 4 54.41 8.15 NA
TNM_PATH_STAGE_GROUP=4B 18 11 36.67 33.54 NA
TNM_PATH_STAGE_GROUP=N_A 3 3 16.23 2.23 NA
TNM_PATH_STAGE_GROUP=99 218 124 35.22 28.35 48
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
47 observations deleted due to missingness
TNM_PATH_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 2 0 1.0 0.000 1.000 1
36 2 0 1.0 0.000 1.000 1
48 2 0 1.0 0.000 1.000 1
60 1 1 0.5 0.354 0.125 1
TNM_PATH_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 1 0.5 0.354 0.125 1
24 1 0 0.5 0.354 0.125 1
36 1 0 0.5 0.354 0.125 1
48 1 0 0.5 0.354 0.125 1
TNM_PATH_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.75 0.217 0.426 1
24 1 0 0.75 0.217 0.426 1
36 1 0 0.75 0.217 0.426 1
48 1 0 0.75 0.217 0.426 1
60 1 0 0.75 0.217 0.426 1
TNM_PATH_STAGE_GROUP=2A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=2B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1.00 0.000 1.0000 1
24 3 1 0.75 0.217 0.4259 1
36 3 0 0.75 0.217 0.4259 1
48 1 2 0.25 0.217 0.0458 1
60 1 0 0.25 0.217 0.0458 1
TNM_PATH_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 2 0.333 0.272 0.0673 1
24 1 0 0.333 0.272 0.0673 1
36 1 0 0.333 0.272 0.0673 1
48 1 0 0.333 0.272 0.0673 1
60 1 0 0.333 0.272 0.0673 1
TNM_PATH_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1.000 0.000 1.0000 1
24 2 1 0.667 0.272 0.2995 1
36 1 1 0.333 0.272 0.0673 1
48 1 0 0.333 0.272 0.0673 1
60 1 0 0.333 0.272 0.0673 1
TNM_PATH_STAGE_GROUP=3B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 2 0.750 0.153 0.503 1.000
24 5 1 0.625 0.171 0.365 1.000
36 4 1 0.500 0.177 0.250 1.000
48 3 1 0.375 0.171 0.153 0.917
60 3 0 0.375 0.171 0.153 0.917
120 1 0 0.375 0.171 0.153 0.917
TNM_PATH_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 0 1.0 0.0000 1.000 1.000
24 9 1 0.9 0.0949 0.732 1.000
36 7 2 0.7 0.1449 0.467 1.000
48 5 1 0.6 0.1549 0.362 0.995
60 5 0 0.6 0.1549 0.362 0.995
120 1 0 0.6 0.1549 0.362 0.995
TNM_PATH_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 2 0.6 0.219 0.2933 1
24 2 0 0.6 0.219 0.2933 1
36 2 0 0.6 0.219 0.2933 1
48 2 0 0.6 0.219 0.2933 1
60 1 1 0.3 0.239 0.0631 1
TNM_PATH_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 3 0.826 0.0913 0.6655 1.000
24 11 0 0.826 0.0913 0.6655 1.000
36 6 3 0.572 0.1390 0.3556 0.921
48 4 2 0.382 0.1440 0.1822 0.799
60 2 2 0.191 0.1195 0.0559 0.651
TNM_PATH_STAGE_GROUP=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.667 0.272 0.2995 1
24 1 1 0.333 0.272 0.0673 1
TNM_PATH_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 156 40 0.804 0.0278 0.752 0.861
24 114 31 0.637 0.0347 0.572 0.708
36 80 24 0.497 0.0371 0.429 0.575
48 55 11 0.422 0.0378 0.354 0.503
60 37 7 0.362 0.0387 0.293 0.446
120 8 10 0.222 0.0440 0.151 0.328
## Univariable Cox Proportional Hazard Model for: TNM_PATH_STAGE_GROUP
Loglik converged before variable 3 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
n= 287, number of events= 163
(47 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_PATH_STAGE_GROUP1A 1.564e+00 4.779e+00 1.226e+00 1.276 0.2020
TNM_PATH_STAGE_GROUP1B 1.374e-01 1.147e+00 1.415e+00 0.097 0.9227
TNM_PATH_STAGE_GROUP2A -1.420e+01 6.836e-07 1.696e+03 -0.008 0.9933
TNM_PATH_STAGE_GROUP2B 9.202e-01 2.510e+00 1.156e+00 0.796 0.4260
TNM_PATH_STAGE_GROUP3 1.301e+00 3.674e+00 1.226e+00 1.062 0.2884
TNM_PATH_STAGE_GROUP3A 1.061e+00 2.890e+00 1.156e+00 0.918 0.3586
TNM_PATH_STAGE_GROUP3B 7.253e-01 2.065e+00 1.096e+00 0.662 0.5082
TNM_PATH_STAGE_GROUP4 -2.263e-02 9.776e-01 1.118e+00 -0.020 0.9839
TNM_PATH_STAGE_GROUP4A 1.394e+00 4.029e+00 1.119e+00 1.245 0.2130
TNM_PATH_STAGE_GROUP4B 1.019e+00 2.771e+00 1.046e+00 0.975 0.3298
TNM_PATH_STAGE_GROUPN_A 2.095e+00 8.129e+00 1.158e+00 1.810 0.0703 .
TNM_PATH_STAGE_GROUP99 9.081e-01 2.480e+00 1.005e+00 0.904 0.3661
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_STAGE_GROUP1A 4.779e+00 2.093e-01 0.43222 52.833
TNM_PATH_STAGE_GROUP1B 1.147e+00 8.716e-01 0.07163 18.376
TNM_PATH_STAGE_GROUP2A 6.836e-07 1.463e+06 0.00000 Inf
TNM_PATH_STAGE_GROUP2B 2.510e+00 3.985e-01 0.26041 24.186
TNM_PATH_STAGE_GROUP3 3.674e+00 2.722e-01 0.33244 40.603
TNM_PATH_STAGE_GROUP3A 2.890e+00 3.460e-01 0.29976 27.865
TNM_PATH_STAGE_GROUP3B 2.065e+00 4.842e-01 0.24087 17.711
TNM_PATH_STAGE_GROUP4 9.776e-01 1.023e+00 0.10922 8.751
TNM_PATH_STAGE_GROUP4A 4.029e+00 2.482e-01 0.44941 36.127
TNM_PATH_STAGE_GROUP4B 2.771e+00 3.609e-01 0.35675 21.526
TNM_PATH_STAGE_GROUPN_A 8.129e+00 1.230e-01 0.84034 78.635
TNM_PATH_STAGE_GROUP99 2.480e+00 4.033e-01 0.34602 17.769
Concordance= 0.537 (se = 0.019 )
Rsquare= 0.048 (max possible= 0.996 )
Likelihood ratio test= 14.09 on 12 df, p=0.2951
Wald test = 11.38 on 12 df, p=0.4963
Score (logrank) test = 13.79 on 12 df, p=0.3145
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 13.



Margins
uni_var(test_var = "MARGINS", data_imp = data)
_________________________________________________
## MARGINS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n events median 0.95LCL 0.95UCL
MARGINS=No Residual 3 1 17.51 17.51 NA
MARGINS=Residual, NOS 2 1 9.69 9.69 NA
MARGINS=Macroscopic Resid 1 0 NA NA NA
MARGINS=Not evaluable 12 5 74.22 40.25 NA
MARGINS=No surg 301 172 35.22 30.65 43
MARGINS=Unknown 15 8 54.41 5.88 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
MARGINS=No Residual
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 1 1 0.5 0.354 0.125 1
MARGINS=Residual, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 1 0.5 0.354 0.125 1
24 1 0 0.5 0.354 0.125 1
36 1 0 0.5 0.354 0.125 1
48 1 0 0.5 0.354 0.125 1
60 1 0 0.5 0.354 0.125 1
MARGINS=Macroscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
MARGINS=Not evaluable
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.909 0.0867 0.754 1
24 9 1 0.818 0.1163 0.619 1
36 6 0 0.818 0.1163 0.619 1
48 5 1 0.682 0.1578 0.433 1
60 3 1 0.511 0.1892 0.248 1
MARGINS=No surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 214 53 0.813 0.0233 0.768 0.860
24 157 42 0.645 0.0296 0.589 0.705
36 110 35 0.496 0.0317 0.438 0.562
48 73 17 0.413 0.0323 0.354 0.481
60 51 11 0.345 0.0329 0.286 0.416
120 10 13 0.220 0.0361 0.159 0.303
MARGINS=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 5 0.629 0.133 0.4158 0.950
24 6 0 0.629 0.133 0.4158 0.950
36 4 1 0.503 0.155 0.2753 0.919
48 3 0 0.503 0.155 0.2753 0.919
60 1 2 0.168 0.146 0.0303 0.927
## Univariable Cox Proportional Hazard Model for: MARGINS
Loglik converged before variable 2 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
MARGINSResidual, NOS -3.903e-01 6.768e-01 1.417e+00 -0.275 0.783
MARGINSMacroscopic Resid -1.503e+01 2.979e-07 1.643e+03 -0.009 0.993
MARGINSNot evaluable -5.288e-01 5.893e-01 1.097e+00 -0.482 0.630
MARGINSNo surg 1.074e-02 1.011e+00 1.004e+00 0.011 0.991
MARGINSUnknown 2.566e-01 1.293e+00 1.062e+00 0.242 0.809
exp(coef) exp(-coef) lower .95 upper .95
MARGINSResidual, NOS 6.768e-01 1.477e+00 0.04212 10.877
MARGINSMacroscopic Resid 2.979e-07 3.356e+06 0.00000 Inf
MARGINSNot evaluable 5.893e-01 1.697e+00 0.06864 5.060
MARGINSNo surg 1.011e+00 9.893e-01 0.14123 7.235
MARGINSUnknown 1.293e+00 7.736e-01 0.16134 10.355
Concordance= 0.521 (se = 0.012 )
Rsquare= 0.014 (max possible= 0.997 )
Likelihood ratio test= 4.82 on 5 df, p=0.4387
Wald test = 2.09 on 5 df, p=0.8366
Score (logrank) test = 3.39 on 5 df, p=0.6406
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: MARGINS



Margins Yes/No
#uni_var(test_var = "MARGINS_YN", data_imp = data)
30 Day Readmission
uni_var(test_var = "READM_HOSP_30_DAYS_F", data_imp = data)
_________________________________________________
## READM_HOSP_30_DAYS_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n events median 0.95LCL 0.95UCL
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 328 183 36.67 31.54 47
READM_HOSP_30_DAYS_F=Plan_Readmit_Same 1 1 3.38 NA NA
READM_HOSP_30_DAYS_F=9 5 3 21.16 6.44 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 234 57 0.815 0.0222 0.773 0.860
24 173 44 0.653 0.0282 0.600 0.711
36 122 35 0.516 0.0304 0.459 0.579
48 83 18 0.433 0.0312 0.376 0.499
60 57 14 0.354 0.0320 0.296 0.422
120 10 14 0.227 0.0357 0.167 0.309
READM_HOSP_30_DAYS_F=Plan_Readmit_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
READM_HOSP_30_DAYS_F=9
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 2 0.5 0.25 0.188 1
24 2 0 0.5 0.25 0.188 1
## Univariable Cox Proportional Hazard Model for: READM_HOSP_30_DAYS_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
READM_HOSP_30_DAYS_FPlan_Readmit_Same 3.1476 23.2796 1.0352 3.040 0.00236 **
READM_HOSP_30_DAYS_F9 0.8348 2.3045 0.5841 1.429 0.15293
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
READM_HOSP_30_DAYS_FPlan_Readmit_Same 23.280 0.04296 3.0604 177.08
READM_HOSP_30_DAYS_F9 2.304 0.43394 0.7335 7.24
Concordance= 0.51 (se = 0.004 )
Rsquare= 0.017 (max possible= 0.997 )
Likelihood ratio test= 5.88 on 2 df, p=0.05296
Wald test = 11.15 on 2 df, p=0.003793
Score (logrank) test = 21.69 on 2 df, p=1.948e-05
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: READM_HOSP_30_DAYS_F



Radiation Type
uni_var(test_var = "RX_SUMM_RADIATION_F", data_imp = data)
_________________________________________________
## RX_SUMM_RADIATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n events median 0.95LCL 0.95UCL
RX_SUMM_RADIATION_F=None 316 174 37.5 33.5 48.2
RX_SUMM_RADIATION_F=Beam Radiation 18 13 21.7 20.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
RX_SUMM_RADIATION_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 223 56 0.811 0.0228 0.767 0.857
24 170 37 0.669 0.0284 0.616 0.727
36 119 34 0.529 0.0310 0.471 0.593
48 80 18 0.442 0.0320 0.383 0.509
60 55 14 0.358 0.0329 0.299 0.429
120 10 14 0.226 0.0365 0.165 0.310
RX_SUMM_RADIATION_F=Beam Radiation
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 4 0.774 0.0997 0.6011 0.996
24 5 7 0.327 0.1183 0.1612 0.665
36 3 2 0.196 0.1009 0.0718 0.538
48 3 0 0.196 0.1009 0.0718 0.538
60 2 0 0.196 0.1009 0.0718 0.538
## Univariable Cox Proportional Hazard Model for: RX_SUMM_RADIATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
RX_SUMM_RADIATION_FBeam Radiation 0.4717 1.6028 0.2888 1.633 0.102
exp(coef) exp(-coef) lower .95 upper .95
RX_SUMM_RADIATION_FBeam Radiation 1.603 0.6239 0.91 2.823
Concordance= 0.513 (se = 0.009 )
Rsquare= 0.007 (max possible= 0.997 )
Likelihood ratio test= 2.34 on 1 df, p=0.126
Wald test = 2.67 on 1 df, p=0.1024
Score (logrank) test = 2.72 on 1 df, p=0.09923
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_SUMM_RADIATION_F



Lymphovascular Invasion
#uni_var(test_var = "LYMPH_VASCULAR_INVASION_F", data_imp = data)
Endoscopic/Robotic
uni_var(test_var = "RX_HOSP_SURG_APPR_2010_F", data_imp = data)
_________________________________________________
## RX_HOSP_SURG_APPR_2010_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
117 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RX_HOSP_SURG_APPR_2010_F=No_Surg 203 95 37.42 28.4 53.8
RX_HOSP_SURG_APPR_2010_F=Endo_Lap 1 0 NA NA NA
RX_HOSP_SURG_APPR_2010_F=Open_Unknown 12 4 74.22 34.4 NA
RX_HOSP_SURG_APPR_2010_F=Unknown 1 1 5.88 NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
117 observations deleted due to missingness
RX_HOSP_SURG_APPR_2010_F=No_Surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 136 36 0.807 0.0290 0.752 0.866
24 95 26 0.640 0.0372 0.572 0.718
36 64 16 0.525 0.0402 0.452 0.610
48 36 8 0.455 0.0419 0.380 0.545
60 20 7 0.350 0.0478 0.268 0.458
RX_HOSP_SURG_APPR_2010_F=Endo_Lap
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
RX_HOSP_SURG_APPR_2010_F=Open_Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 1 0.900 0.0949 0.732 1
24 7 0 0.900 0.0949 0.732 1
36 5 1 0.750 0.1581 0.496 1
48 5 0 0.750 0.1581 0.496 1
60 3 1 0.562 0.2011 0.279 1
RX_HOSP_SURG_APPR_2010_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
## Univariable Cox Proportional Hazard Model for: RX_HOSP_SURG_APPR_2010_F
Loglik converged before variable 1 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
n= 217, number of events= 100
(117 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RX_HOSP_SURG_APPR_2010_FEndo_Lap -1.530e+01 2.269e-07 2.688e+03 -0.006 0.9955
RX_HOSP_SURG_APPR_2010_FOpen_Unknown -6.571e-01 5.184e-01 5.121e-01 -1.283 0.1995
RX_HOSP_SURG_APPR_2010_FUnknown 2.433e+00 1.140e+01 1.029e+00 2.364 0.0181 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RX_HOSP_SURG_APPR_2010_FEndo_Lap 2.269e-07 4.407e+06 0.000 Inf
RX_HOSP_SURG_APPR_2010_FOpen_Unknown 5.184e-01 1.929e+00 0.190 1.414
RX_HOSP_SURG_APPR_2010_FUnknown 1.140e+01 8.774e-02 1.516 85.668
Concordance= 0.531 (se = 0.014 )
Rsquare= 0.028 (max possible= 0.986 )
Likelihood ratio test= 6.25 on 3 df, p=0.1001
Wald test = 7.33 on 3 df, p=0.06221
Score (logrank) test = 11.59 on 3 df, p=0.00893
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_HOSP_SURG_APPR_2010_F



Surgery Radiation Sequence
uni_var(test_var = "SURG_RAD_SEQ", data_imp = data)
_________________________________________________
## SURG_RAD_SEQ
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n events median 0.95LCL 0.95UCL
SURG_RAD_SEQ=Surg Alone 32 14 56.64 40.25 NA
SURG_RAD_SEQ=Rad Alone 18 13 21.68 20.24 NA
SURG_RAD_SEQ=No Treatment 282 158 36.67 32.46 47
SURG_RAD_SEQ=Other 2 2 6.16 5.88 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
SURG_RAD_SEQ=Surg Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 22 6 0.793 0.0754 0.658 0.956
24 18 2 0.721 0.0840 0.574 0.906
36 12 1 0.666 0.0941 0.505 0.878
48 10 1 0.610 0.1013 0.441 0.845
60 6 3 0.407 0.1173 0.231 0.716
SURG_RAD_SEQ=Rad Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 4 0.774 0.0997 0.6011 0.996
24 5 7 0.327 0.1183 0.1612 0.665
36 3 2 0.196 0.1009 0.0718 0.538
48 3 0 0.196 0.1009 0.0718 0.538
60 2 0 0.196 0.1009 0.0718 0.538
SURG_RAD_SEQ=No Treatment
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 201 48 0.819 0.0237 0.774 0.867
24 152 35 0.669 0.0301 0.612 0.730
36 107 33 0.519 0.0328 0.458 0.587
48 70 17 0.429 0.0337 0.367 0.500
60 49 11 0.355 0.0345 0.294 0.430
120 10 13 0.222 0.0376 0.160 0.310
SURG_RAD_SEQ=Other
time n.risk n.event survival std.err lower 95% CI upper 95% CI
## Univariable Cox Proportional Hazard Model for: SURG_RAD_SEQ
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQRad Alone 0.7079 2.0297 0.3863 1.832 0.066885 .
SURG_RAD_SEQNo Treatment 0.2447 1.2772 0.2792 0.876 0.380797
SURG_RAD_SEQOther 2.5970 13.4234 0.7749 3.351 0.000805 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQRad Alone 2.030 0.4927 0.9519 4.328
SURG_RAD_SEQNo Treatment 1.277 0.7829 0.7389 2.208
SURG_RAD_SEQOther 13.423 0.0745 2.9392 61.304
Concordance= 0.529 (se = 0.014 )
Rsquare= 0.026 (max possible= 0.997 )
Likelihood ratio test= 8.92 on 3 df, p=0.03036
Wald test = 13.71 on 3 df, p=0.003326
Score (logrank) test = 19.43 on 3 df, p=0.0002229
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURG_RAD_SEQ



Surgery Yes/No
uni_var(test_var = "SURGERY_YN", data_imp = data)
_________________________________________________
## SURGERY_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n events median 0.95LCL 0.95UCL
SURGERY_YN=No 300 171 35.22 30.65 43
SURGERY_YN=Ukn 2 2 6.16 5.88 NA
SURGERY_YN=Yes 32 14 56.64 40.25 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
SURGERY_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 214 52 0.816 0.0232 0.772 0.862
24 157 42 0.647 0.0296 0.591 0.708
36 110 35 0.498 0.0318 0.439 0.564
48 73 17 0.414 0.0324 0.355 0.483
60 51 11 0.346 0.0330 0.287 0.417
120 10 13 0.220 0.0362 0.160 0.304
SURGERY_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
SURGERY_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 22 6 0.793 0.0754 0.658 0.956
24 18 2 0.721 0.0840 0.574 0.906
36 12 1 0.666 0.0941 0.505 0.878
48 10 1 0.610 0.1013 0.441 0.845
60 6 3 0.407 0.1173 0.231 0.716
## Univariable Cox Proportional Hazard Model for: SURGERY_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
SURGERY_YNUkn 2.3154 10.1287 0.7308 3.168 0.00153 **
SURGERY_YNYes -0.2733 0.7609 0.2783 -0.982 0.32621
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURGERY_YNUkn 10.1287 0.09873 2.418 42.421
SURGERY_YNYes 0.7609 1.31424 0.441 1.313
Concordance= 0.517 (se = 0.012 )
Rsquare= 0.02 (max possible= 0.997 )
Likelihood ratio test= 6.67 on 2 df, p=0.03559
Wald test = 11.18 on 2 df, p=0.003734
Score (logrank) test = 16.8 on 2 df, p=0.0002247
no non-missing arguments to min; returning Infno non-missing arguments to max; returning -InfTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURGERY_YN



Radiation Yes/No
uni_var(test_var = "RADIATION_YN", data_imp = data)
_________________________________________________
## RADIATION_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
n events median 0.95LCL 0.95UCL
RADIATION_YN=No 316 174 37.5 33.5 48.2
RADIATION_YN=Yes 18 13 21.7 20.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
RADIATION_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 223 56 0.811 0.0228 0.767 0.857
24 170 37 0.669 0.0284 0.616 0.727
36 119 34 0.529 0.0310 0.471 0.593
48 80 18 0.442 0.0320 0.383 0.509
60 55 14 0.358 0.0329 0.299 0.429
120 10 14 0.226 0.0365 0.165 0.310
RADIATION_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 4 0.774 0.0997 0.6011 0.996
24 5 7 0.327 0.1183 0.1612 0.665
36 3 2 0.196 0.1009 0.0718 0.538
48 3 0 0.196 0.1009 0.0718 0.538
60 2 0 0.196 0.1009 0.0718 0.538
## Univariable Cox Proportional Hazard Model for: RADIATION_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
RADIATION_YNYes 0.4717 1.6028 0.2888 1.633 0.102
exp(coef) exp(-coef) lower .95 upper .95
RADIATION_YNYes 1.603 0.6239 0.91 2.823
Concordance= 0.513 (se = 0.009 )
Rsquare= 0.007 (max possible= 0.997 )
Likelihood ratio test= 2.34 on 1 df, p=0.126
Wald test = 2.67 on 1 df, p=0.1024
Score (logrank) test = 2.72 on 1 df, p=0.09923
## Unadjusted Kaplan Meier Overall Survival Curve for: RADIATION_YN



Chemo Yes/No
uni_var(test_var = "CHEMO_YN", data_imp = data)
_________________________________________________
## CHEMO_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n events median 0.95LCL 0.95UCL
CHEMO_YN=No 141 81 37.4 31.1 59.4
CHEMO_YN=Yes 186 102 35.0 28.2 43.4
CHEMO_YN=Ukn 7 4 48.7 40.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
CHEMO_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 100 29 0.783 0.0357 0.716 0.856
24 80 14 0.668 0.0416 0.591 0.755
36 56 19 0.505 0.0453 0.424 0.602
48 41 6 0.444 0.0462 0.362 0.545
60 28 7 0.361 0.0472 0.279 0.466
120 6 5 0.275 0.0496 0.193 0.391
CHEMO_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 131 30 0.826 0.0289 0.7716 0.885
24 90 30 0.625 0.0388 0.5538 0.706
36 62 17 0.500 0.0413 0.4247 0.587
48 39 11 0.406 0.0422 0.3316 0.498
60 27 6 0.337 0.0436 0.2614 0.434
120 4 8 0.174 0.0522 0.0967 0.313
CHEMO_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 1 0.833 0.152 0.583 1
24 5 0 0.833 0.152 0.583 1
36 4 0 0.833 0.152 0.583 1
48 3 1 0.625 0.213 0.320 1
60 2 1 0.417 0.222 0.147 1
## Univariable Cox Proportional Hazard Model for: CHEMO_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n= 334, number of events= 187
coef exp(coef) se(coef) z Pr(>|z|)
CHEMO_YNYes 0.08611 1.08993 0.14935 0.577 0.564
CHEMO_YNUkn -0.12535 0.88218 0.51276 -0.244 0.807
exp(coef) exp(-coef) lower .95 upper .95
CHEMO_YNYes 1.0899 0.9175 0.8133 1.461
CHEMO_YNUkn 0.8822 1.1335 0.3229 2.410
Concordance= 0.506 (se = 0.02 )
Rsquare= 0.001 (max possible= 0.997 )
Likelihood ratio test= 0.46 on 2 df, p=0.7961
Wald test = 0.45 on 2 df, p=0.7986
Score (logrank) test = 0.45 on 2 df, p=0.7984
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: CHEMO_YN



Treatment Yes/No
uni_var(test_var = "Tx_YN", data_imp = data)
_________________________________________________
## Tx_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
7 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
Tx_YN=FALSE 86 49 41.4 28.3 59.6
Tx_YN=TRUE 241 134 34.4 30.2 43.4
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
7 observations deleted due to missingness
Tx_YN=FALSE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 62 16 0.806 0.0436 0.725 0.896
24 49 10 0.670 0.0534 0.573 0.784
36 36 10 0.529 0.0579 0.427 0.656
48 23 5 0.441 0.0604 0.337 0.577
60 14 5 0.333 0.0623 0.231 0.480
120 4 3 0.242 0.0642 0.144 0.407
Tx_YN=TRUE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 169 43 0.808 0.0264 0.758 0.862
24 121 34 0.636 0.0335 0.574 0.705
36 82 26 0.491 0.0360 0.426 0.567
48 57 12 0.416 0.0364 0.351 0.494
60 41 8 0.353 0.0372 0.287 0.434
120 6 10 0.216 0.0445 0.144 0.323
## Univariable Cox Proportional Hazard Model for: Tx_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
n= 327, number of events= 183
(7 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
Tx_YNTRUE 0.06002 1.06186 0.16726 0.359 0.72
exp(coef) exp(-coef) lower .95 upper .95
Tx_YNTRUE 1.062 0.9417 0.7651 1.474
Concordance= 0.504 (se = 0.018 )
Rsquare= 0 (max possible= 0.996 )
Likelihood ratio test= 0.13 on 1 df, p=0.7185
Wald test = 0.13 on 1 df, p=0.7197
Score (logrank) test = 0.13 on 1 df, p=0.7197
## Unadjusted Kaplan Meier Overall Survival Curve for: Tx_YN



Tumor specific Variables
Node Size
Cox Proportional Hazard Ratio
Model #1
Full analysis
model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F,
data = data)
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F +
INCOME_F + U_R_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F, data = data)
n= 308, number of events= 172
(26 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQRad Alone 1.042549 2.836438 0.485031 2.149 0.0316 *
SURG_RAD_SEQNo Treatment 0.415025 1.514409 0.316377 1.312 0.1896
SURG_RAD_SEQOther 3.241001 25.559303 0.830177 3.904 9.46e-05 ***
INSURANCE_FNone 0.820261 2.271092 0.464342 1.767 0.0773 .
INSURANCE_FMedicaid 0.306604 1.358803 0.431224 0.711 0.4771
INSURANCE_FMedicare 0.200700 1.222258 0.266328 0.754 0.4511
INSURANCE_FOther Government 0.344992 1.411978 0.798993 0.432 0.6659
INSURANCE_FUnknown -0.678558 0.507348 1.082776 -0.627 0.5309
AGE 0.029390 1.029826 0.011515 2.552 0.0107 *
SEX_FFemale 0.105415 1.111172 0.173309 0.608 0.5430
RACE_FBlack -0.113112 0.893051 0.245228 -0.461 0.6446
RACE_FOther/Unk -0.108362 0.897303 0.404023 -0.268 0.7885
RACE_FAsian 0.217338 1.242764 0.762987 0.285 0.7758
INCOME_F$38,000 - $47,999 -0.008822 0.991217 0.309667 -0.028 0.9773
INCOME_F$48,000 - $62,999 0.331145 1.392562 0.296645 1.116 0.2643
INCOME_F$63,000 + 0.543429 1.721901 0.363952 1.493 0.1354
U_R_FUrban -0.268208 0.764749 0.287515 -0.933 0.3509
U_R_FRural 0.993340 2.700237 1.171308 0.848 0.3964
FACILITY_TYPE_FComprehensive Comm Ca Program -1.050663 0.349706 0.585195 -1.795 0.0726 .
FACILITY_TYPE_FAcademic/Research Program -0.876357 0.416297 0.542354 -1.616 0.1061
FACILITY_TYPE_FIntegrated Network Ca Program -0.204085 0.815393 0.675427 -0.302 0.7625
FACILITY_LOCATION_FMiddle Atlantic -0.255995 0.774146 0.398492 -0.642 0.5206
FACILITY_LOCATION_FSouth Atlantic 0.754022 2.125532 0.399990 1.885 0.0594 .
FACILITY_LOCATION_FEast North Central -0.115090 0.891286 0.416485 -0.276 0.7823
FACILITY_LOCATION_FEast South Central 0.508649 1.663043 0.486864 1.045 0.2961
FACILITY_LOCATION_FWest North Central 0.384315 1.468608 0.422293 0.910 0.3628
FACILITY_LOCATION_FWest South Central 0.313176 1.367762 0.528329 0.593 0.5533
FACILITY_LOCATION_FMountain 0.339495 1.404239 0.479745 0.708 0.4792
FACILITY_LOCATION_FPacific -0.048822 0.952351 0.446797 -0.109 0.9130
EDUCATION_F13 - 20.9% 0.125646 1.133881 0.306833 0.409 0.6822
EDUCATION_F7 - 12.9% -0.098455 0.906236 0.351923 -0.280 0.7797
EDUCATION_FLess than 7% -0.760029 0.467653 0.422155 -1.800 0.0718 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQRad Alone 2.8364 0.35255 1.09626 7.339
SURG_RAD_SEQNo Treatment 1.5144 0.66032 0.81460 2.815
SURG_RAD_SEQOther 25.5593 0.03912 5.02228 130.076
INSURANCE_FNone 2.2711 0.44032 0.91408 5.643
INSURANCE_FMedicaid 1.3588 0.73594 0.58358 3.164
INSURANCE_FMedicare 1.2223 0.81816 0.72521 2.060
INSURANCE_FOther Government 1.4120 0.70823 0.29493 6.760
INSURANCE_FUnknown 0.5073 1.97103 0.06076 4.236
AGE 1.0298 0.97104 1.00684 1.053
SEX_FFemale 1.1112 0.89995 0.79115 1.561
RACE_FBlack 0.8931 1.11976 0.55225 1.444
RACE_FOther/Unk 0.8973 1.11445 0.40647 1.981
RACE_FAsian 1.2428 0.80466 0.27857 5.544
INCOME_F$38,000 - $47,999 0.9912 1.00886 0.54023 1.819
INCOME_F$48,000 - $62,999 1.3926 0.71810 0.77859 2.491
INCOME_F$63,000 + 1.7219 0.58075 0.84375 3.514
U_R_FUrban 0.7647 1.30762 0.43530 1.344
U_R_FRural 2.7002 0.37034 0.27188 26.818
FACILITY_TYPE_FComprehensive Comm Ca Program 0.3497 2.85955 0.11107 1.101
FACILITY_TYPE_FAcademic/Research Program 0.4163 2.40213 0.14380 1.205
FACILITY_TYPE_FIntegrated Network Ca Program 0.8154 1.22640 0.21699 3.064
FACILITY_LOCATION_FMiddle Atlantic 0.7741 1.29175 0.35451 1.691
FACILITY_LOCATION_FSouth Atlantic 2.1255 0.47047 0.97050 4.655
FACILITY_LOCATION_FEast North Central 0.8913 1.12197 0.39401 2.016
FACILITY_LOCATION_FEast South Central 1.6630 0.60131 0.64045 4.318
FACILITY_LOCATION_FWest North Central 1.4686 0.68092 0.64187 3.360
FACILITY_LOCATION_FWest South Central 1.3678 0.73112 0.48562 3.852
FACILITY_LOCATION_FMountain 1.4042 0.71213 0.54838 3.596
FACILITY_LOCATION_FPacific 0.9524 1.05003 0.39672 2.286
EDUCATION_F13 - 20.9% 1.1339 0.88193 0.62143 2.069
EDUCATION_F7 - 12.9% 0.9062 1.10347 0.45466 1.806
EDUCATION_FLess than 7% 0.4677 2.13834 0.20445 1.070
Concordance= 0.672 (se = 0.024 )
Rsquare= 0.194 (max possible= 0.996 )
Likelihood ratio test= 66.58 on 32 df, p=0.0003192
Wald test = 69.18 on 32 df, p=0.0001505
Score (logrank) test = 79.13 on 32 df, p=7.212e-06
Summary of Model
model_one %>%
tidy(., exponentiate = TRUE) %>%
select(term, estimate, conf.low, conf.high, p.value) %>%
rename(Variable = term,
Hazard_Ratio = estimate) %>%
tbl_df %>%
print(n = nrow(.))
Linear Regression
fit_surv <- lm(DX_LASTCONTACT_DEATH_MONTHS ~
FACILITY_TYPE_F + FACILITY_LOCATION_F +
SURGERY_YN +
AGE_F + INCOME_F +
EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT + GRADE_F,
data = data3)
summary(fit_surv) # R^2 = 0.2937 , p = 2.712e-08
Call:
lm(formula = DX_LASTCONTACT_DEATH_MONTHS ~ FACILITY_TYPE_F +
FACILITY_LOCATION_F + SURGERY_YN + AGE_F + INCOME_F + EDUCATION_F +
YEAR_OF_DIAGNOSIS + SITE_TEXT + GRADE_F, data = data3)
Residuals:
Min 1Q Median 3Q Max
-63.823 -17.206 -0.066 13.580 62.475
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 81.5123 40.9187 1.992 0.047619 *
FACILITY_TYPE_FComprehensive Comm Ca Program 13.5630 11.6841 1.161 0.246996
FACILITY_TYPE_FAcademic/Research Program 7.9960 11.1772 0.715 0.475141
FACILITY_TYPE_FIntegrated Network Ca Program -22.9532 14.7217 -1.559 0.120419
FACILITY_LOCATION_FMiddle Atlantic 0.9357 7.6660 0.122 0.902965
FACILITY_LOCATION_FSouth Atlantic -18.8857 7.7792 -2.428 0.016009 *
FACILITY_LOCATION_FEast North Central -7.1142 8.0935 -0.879 0.380372
FACILITY_LOCATION_FEast South Central -11.7327 10.0915 -1.163 0.246254
FACILITY_LOCATION_FWest North Central -13.5558 8.9291 -1.518 0.130427
FACILITY_LOCATION_FWest South Central -15.7062 9.9630 -1.576 0.116377
FACILITY_LOCATION_FMountain -8.5483 9.0646 -0.943 0.346705
FACILITY_LOCATION_FPacific -1.2543 8.2379 -0.152 0.879121
SURGERY_YNYes 12.3480 5.5617 2.220 0.027441 *
AGE_F(54,64] 2.7563 5.6702 0.486 0.627386
AGE_F(64,74] -5.3610 5.5001 -0.975 0.330796
AGE_F(74,100] -11.2008 5.5360 -2.023 0.044272 *
INCOME_F$38,000 - $47,999 1.7899 5.8210 0.307 0.758765
INCOME_F$48,000 - $62,999 -6.5934 5.8835 -1.121 0.263674
INCOME_F$63,000 + -20.1612 7.1869 -2.805 0.005484 **
EDUCATION_F13 - 20.9% -2.1926 6.0687 -0.361 0.718223
EDUCATION_F7 - 12.9% 2.9511 6.7457 0.437 0.662205
EDUCATION_FLess than 7% 15.9779 7.8400 2.038 0.042763 *
YEAR_OF_DIAGNOSIS2005 -11.7085 19.0000 -0.616 0.538383
YEAR_OF_DIAGNOSIS2006 -7.5507 15.7224 -0.480 0.631534
YEAR_OF_DIAGNOSIS2007 -19.9788 13.9748 -1.430 0.154261
YEAR_OF_DIAGNOSIS2008 -31.1960 13.9668 -2.234 0.026531 *
YEAR_OF_DIAGNOSIS2009 -34.2623 13.6334 -2.513 0.012694 *
YEAR_OF_DIAGNOSIS2010 -46.1265 12.7643 -3.614 0.000375 ***
YEAR_OF_DIAGNOSIS2011 -50.9638 12.6538 -4.028 7.79e-05 ***
YEAR_OF_DIAGNOSIS2012 -48.6167 12.8027 -3.797 0.000190 ***
YEAR_OF_DIAGNOSIS2013 -49.1303 12.7822 -3.844 0.000159 ***
YEAR_OF_DIAGNOSIS2014 -58.1213 12.5931 -4.615 6.71e-06 ***
YEAR_OF_DIAGNOSIS2015 -63.3904 12.4690 -5.084 7.98e-07 ***
SITE_TEXTC44.4 Skin of scalp and neck -3.1766 36.5057 -0.087 0.930740
SITE_TEXTC44.5 Skin of trunk -62.2680 27.3058 -2.280 0.023556 *
SITE_TEXTC44.6 Skin of upper limb and shoulder -26.3479 32.3707 -0.814 0.416570
SITE_TEXTC44.7 Skin of lower limb and hip -20.3268 27.8527 -0.730 0.466301
SITE_TEXTC44.8 Overlapping lesion of skin -50.7196 26.4697 -1.916 0.056661 .
SITE_TEXTC44.9 Skin, NOS -51.9597 26.2985 -1.976 0.049448 *
GRADE_F5 55.6413 27.0857 2.054 0.041148 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 24.73 on 217 degrees of freedom
(12 observations deleted due to missingness)
Multiple R-squared: 0.4088, Adjusted R-squared: 0.3025
F-statistic: 3.847 on 39 and 217 DF, p-value: 1.154e-10
Prediction Logistic Regression Models
Surgery
Chemo
Radiation
Immunotherapy
Any Treatment
Metastasis at Time of Diagnosis
LS0tCnRpdGxlOiAiU2V6YXJ5IFN5bmRyb21lIgphdXRob3I6ICJSYW1pZSBGYXRoeSIKZGF0ZTogIjExLzI3LzIwMTkiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IHVuaXRlZAogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCi0tLQoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CgpsaWJyYXJ5KCJnZ3Bsb3QyIikKbGlicmFyeSgiZHBseXIiKQpsaWJyYXJ5KCJ0aWR5ciIpCmxpYnJhcnkoImtuaXRyIikKbGlicmFyeSgidGFibGVvbmUiKQpsaWJyYXJ5KCJmb3JjYXRzIikKbGlicmFyeSgic3Vydml2YWwiKQpsaWJyYXJ5KCJucHN1cnYiKQpsaWJyYXJ5KCJicm9vbSIpCmxpYnJhcnkoInRpYmJsZSIpCmxpYnJhcnkoInJlYWRyIikKbGlicmFyeSgic3Vydm1pbmVyIikKbGlicmFyeSgic3RyaW5nciIpCgoKa25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG89VFJVRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1UUlVFKQonJSFpbiUnIDwtIGZ1bmN0aW9uKHgseSkhKCclaW4lJyh4LHkpKQpgYGAKCmBgYHtyfQpwX3RhYmxlIDwtIGZ1bmN0aW9uKHRhYl9kYXRhLCAuLi4pIHsKICB0YWJfZGF0YV8yIDwtIGRlcGFyc2Uoc3Vic3RpdHV0ZSh0YWJfZGF0YSkpCiAgCiAgdGFibGVfcCA8LSBkby5jYWxsKENyZWF0ZVRhYmxlT25lLCAKICAgICAgICAgICAgICAgICAgICAgbGlzdChkYXRhID0gYXMubmFtZSh0YWJfZGF0YV8yKSwgaW5jbHVkZU5BID0gVFJVRSwgLi4uKSkKICB0YWJsZV9wX291dCA8LSBwcmludCh0YWJsZV9wLAogICAgICAgICAgICAgICAgICAgICAgIHNob3dBbGxMZXZlbHMgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgIHByaW50VG9nZ2xlID0gRkFMU0UpCiAga2FibGUodGFibGVfcF9vdXQsCiAgICAgICAgYWxpZ24gPSAiYyIpCn0KYGBgCgpgYGB7cn0KdW5pX3ZhciA8LSBmdW5jdGlvbih0ZXN0X3ZhciwgZGF0YV9pbXApIHsKCiAgICAgICAgICAgICAgICAKICAgICAgICBjYXQoIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiICAgXG4jIyIsIHRlc3RfdmFyKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIpCiAgICAgICAgY2F0KCJcbiIpCgogICAgICAgIAogICAgICAgIGYgPC0gYXMuZm9ybXVsYShwYXN0ZSgiU3VydihEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMsIFBVRl9WSVRBTF9TVEFUVVMgPT0gMCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5uYW1lKHRlc3RfdmFyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwID0gIiB+ICIgKSkKICAgICAgICAKICAgICAgICBkYXRhX2ltcF8yIDwtIGRlcGFyc2Uoc3Vic3RpdHV0ZShkYXRhX2ltcCkpCgogICAgICAgIGttX2ZpdCA8LSBkby5jYWxsKCJzdXJ2Zml0IiwgbGlzdChmb3JtdWxhID0gZiwgZGF0YSA9IGFzLm5hbWUoZGF0YV9pbXBfMikpKQoKICAgICAgICBwcmludChrbV9maXQpCiAgICAgICAgY2F0KCJcbiIpCgogICAgICAgIHByaW50KHN1bW1hcnkoa21fZml0LCB0aW1lcyA9IGMoMTIsIDI0LCAzNiwgNDgsIDYwLCAxMjApKSkKICAgICAgICBjYXQoIlxuIikKCgogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiICAgXG4jIyBVbml2YXJpYWJsZSBDb3ggUHJvcG9ydGlvbmFsIEhhemFyZCBNb2RlbCBmb3I6ICIsIHRlc3RfdmFyKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiXG4iKQoKCiAgICAgICAgbl9sZXZlbHMgPC0gbmxldmVscyhkYXRhX2ltcFtbdGVzdF92YXJdXSkKCiAgICAgICAgaWYobl9sZXZlbHMgPT0gMSl7CiAgICAgICAgICAgICAgICBwcmludCgiT25seSBvbmUgbGV2ZWwsIG5vIENveCBtb2RlbCBwZXJmb3JtZWQiKQogICAgICAgICAgICAgICAgY2F0KCJcbiIpCgogICAgICAgIH0gZWxzZSB7CgoKICAgICAgICAgICAgICAgIGNveF9maXQgPC0gZG8uY2FsbCgiY294cGgiLCBsaXN0KGZvcm11bGEgPSBmLCBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSkpCgogICAgICAgICAgICAgICAgcHJpbnQoc3VtbWFyeShjb3hfZml0KSkKICAgICAgICAgICAgICAgIGNhdCgiXG4iKQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBkby5jYWxsKCJnZ2ZvcmVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KG1vZGVsID0gY294X2ZpdCwgZGF0YSA9IGFzLm5hbWUoZGF0YV9pbXBfMikpKQoKCiAgICAgICAgfQoKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMgVW5hZGp1c3RlZCBLYXBsYW4gTWVpZXIgT3ZlcmFsbCBTdXJ2aXZhbCBDdXJ2ZSBmb3I6ICIsIHRlc3RfdmFyKQoKCiAgICAgICAgcCA8LSBkby5jYWxsKCJnZ3N1cnZwbG90IiwKICAgICAgICAgICAgICAgICAgICAgbGlzdChmaXQgPSBrbV9maXQsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIiwgY2Vuc29yID0gRkFMU0UsIGxlZ2VuZCA9ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXR5cGUgPSAic3RyYXRhIiwgeGxhYiA9ICJUaW1lIChNb250aHMpIikpCgogICAgICAgIHByaW50KHApCgp9CgpgYGAKCmBgYHtyIGNodW5rMiwgY2FjaGU9VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcmVzdWx0cz0naGlkZSd9CmNvbC53aWR0aCA8LSBjKDM3LCAxMCwgMSwgMSwgMywgMSwgMiwgMSwgMiwgMSwgMSwgMSwgMSwgMSwgMSwgOCwgMiwgMiwgMiwgNCwgNCwgMSwgNCwgMSwgMSwKICAgICAgICAgICAgICAgMSwgMywgMiwgMiwgOCwgMiwgNSwgNSwgNSwgNCwgNSwgNSwgNSw0LCAyLCAxLCAyLCAxLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAzLAogICAgICAgICAgICAgICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCA2LCA4LAogICAgICAgICAgICAgICA4LCA4LCAyLCAxLCAxLCAxLCAxLCA4LCAxLCAxLCA4LCAxLCAxLCAyLCAyLCA1LCAyLCA1LCAzLCAxLCAzLCAxLCA4LCA4LCAyLCA4LAogICAgICAgICAgICAgICAyLCA4LCAyLCAyLCAxLCA4LCAxLCAxLCAxLCAxLCAxLCA4LCAxLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAyLCAxLCAzLCAxLCAxLAogICAgICAgICAgICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxKQoKY29sLm5hbWVzLmFiciA8LSBjKCJQVUZfQ0FTRV9JRCIsICJQVUZfRkFDSUxJVFlfSUQiLCAiRkFDSUxJVFlfVFlQRV9DRCIsICJGQUNJTElUWV9MT0NBVElPTl9DRCIsCiAgICAgICAgICAgICAgICAgICAiQUdFIiwgIlNFWCIsICJSQUNFIiwgIlNQQU5JU0hfSElTUEFOSUNfT1JJR0lOIiwgIklOU1VSQU5DRV9TVEFUVVMiLAogICAgICAgICAgICAgICAgICAgIk1FRF9JTkNfUVVBUl8wMCIsICJOT19IU0RfUVVBUl8wMCIsICJVUl9DRF8wMyIsICJNRURfSU5DX1FVQVJfMTIiLCAiTk9fSFNEX1FVQVJfMTIiLAogICAgICAgICAgICAgICAgICAgIlVSX0NEXzEzIiwgIkNST1dGTFkiLCAiQ0RDQ19UT1RBTF9CRVNUIiwgIlNFUVVFTkNFX05VTUJFUiIsICJDTEFTU19PRl9DQVNFIiwKICAgICAgICAgICAgICAgICAgICJZRUFSX09GX0RJQUdOT1NJUyIsICJQUklNQVJZX1NJVEUiLCAiTEFURVJBTElUWSIsICJISVNUT0xPR1kiLCAiQkVIQVZJT1IiLCAiR1JBREUiLAogICAgICAgICAgICAgICAgICAgIkRJQUdOT1NUSUNfQ09ORklSTUFUSU9OIiwgIlRVTU9SX1NJWkUiLCAiUkVHSU9OQUxfTk9ERVNfUE9TSVRJVkUiLAogICAgICAgICAgICAgICAgICAgIlJFR0lPTkFMX05PREVTX0VYQU1JTkVEIiwgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIlJYX1NVTU1fRFhTVEdfUFJPQyIsICJUTk1fQ0xJTl9UIiwKICAgICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLCAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLAogICAgICAgICAgICAgICAgICAgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwgIlROTV9FRElUSU9OX05VTUJFUiIsICJBTkFMWVRJQ19TVEFHRV9HUk9VUCIsICJDU19NRVRTX0FUX0RYIiwKICAgICAgICAgICAgICAgICAgICJDU19NRVRTX0VWQUwiLCAiQ1NfRVhURU5TSU9OIiwgIkNTX1RVTU9SX1NJWkVFWFRfRVZBTCIsICJDU19NRVRTX0RYX0JPTkUiLCAiQ1NfTUVUU19EWF9CUkFJTiIsCiAgICAgICAgICAgICAgICAgICAiQ1NfTUVUU19EWF9MSVZFUiIsICJDU19NRVRTX0RYX0xVTkciLCAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT04iLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8zIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl81IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzciLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfOCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzkiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEyIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTMiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTQiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE2IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE3IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTgiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xOSIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIxIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjIiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjMiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yNCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzI1IiwKICAgICAgICAgICAgICAgICAgICJDU19WRVJTSU9OX0xBVEVTVCIsICJEWF9SWF9TVEFSVEVEX0RBWVMiLCAiRFhfU1VSR19TVEFSVEVEX0RBWVMiLCAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU1VSR19QUklNX1NJVEUiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMCIsICJSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU0NPUEVfUkVHX0xOX1NVUiIsICJSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwgIlJFQURNX0hPU1BfMzBfREFZUyIsCiAgICAgICAgICAgICAgICAgICAiUkVBU09OX0ZPUl9OT19TVVJHRVJZIiwgIkRYX1JBRF9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9SQURJQVRJT04iLCAiUkFEX0xPQ0FUSU9OX09GX1JYIiwKICAgICAgICAgICAgICAgICAgICJSQURfVFJFQVRfVk9MIiwgIlJBRF9SRUdJT05BTF9SWF9NT0RBTElUWSIsICJSQURfUkVHSU9OQUxfRE9TRV9DR1kiLCAiUkFEX0JPT1NUX1JYX01PREFMSVRZIiwKICAgICAgICAgICAgICAgICAgICJSQURfQk9PU1RfRE9TRV9DR1kiLCAiUkFEX05VTV9UUkVBVF9WT0wiLCAiUlhfU1VNTV9TVVJHUkFEX1NFUSIsICJSQURfRUxBUFNFRF9SWF9EQVlTIiwKICAgICAgICAgICAgICAgICAgICJSRUFTT05fRk9SX05PX1JBRElBVElPTiIsICJEWF9TWVNURU1JQ19TVEFSVEVEX0RBWVMiLCAiRFhfQ0hFTU9fU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fQ0hFTU8iLAogICAgICAgICAgICAgICAgICAgIkRYX0hPUk1PTkVfU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fSE9STU9ORSIsICJEWF9JTU1VTk9fU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fSU1NVU5PVEhFUkFQWSIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9UUk5TUExOVF9FTkRPIiwgIlJYX1NVTU1fU1lTVEVNSUNfU1VSX1NFUSIsICJEWF9PVEhFUl9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9PVEhFUiIsCiAgICAgICAgICAgICAgICAgICAiUEFMTElBVElWRV9DQVJFIiwgIlJYX1NVTU1fVFJFQVRNRU5UX1NUQVRVUyIsICJQVUZfMzBfREFZX01PUlRfQ0QiLCAiUFVGXzkwX0RBWV9NT1JUX0NEIiwKICAgICAgICAgICAgICAgICAgICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLCAiUFVGX1ZJVEFMX1NUQVRVUyIsICJSWF9IT1NQX1NVUkdfUFJJTV9TSVRFIiwgIlJYX0hPU1BfQ0hFTU8iLAogICAgICAgICAgICAgICAgICAgIlJYX0hPU1BfSU1NVU5PVEhFUkFQWSIsICJSWF9IT1NQX0hPUk1PTkUiLCAiUlhfSE9TUF9PVEhFUiIsICJQVUZfTVVMVF9TT1VSQ0UiLCAiUkVGRVJFTkNFX0RBVEVfRkxBRyIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9TQ09QRV9SRUdfTE5fMjAxMiIsICJSWF9IT1NQX0RYU1RHX1BST0MiLCAiUEFMTElBVElWRV9DQVJFX0hPU1AiLCAiVFVNT1JfU0laRV9TVU1NQVJZIiwKICAgICAgICAgICAgICAgICAgICJNRVRTX0FUX0RYX09USEVSIiwgIk1FVFNfQVRfRFhfRElTVEFOVF9MTiIsICJNRVRTX0FUX0RYX0JPTkUiLCAiTUVUU19BVF9EWF9CUkFJTiIsCiAgICAgICAgICAgICAgICAgICAiTUVUU19BVF9EWF9MSVZFUiIsICJNRVRTX0FUX0RYX0xVTkciLCAiTk9fSFNEX1FVQVJfMTYiLCAiTUVEX0lOQ19RVUFSXzE2IiwgIk1FRElDQUlEX0VYUE5fQ09ERSIpCgoKCiNSZWFkIGluIGRhdGEgZm9yIGVhY2ggc3Vic2l0ZQpsaXAgPC0gcmVhZF9md2YoJ05DREJQVUZfTGlwLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCm1lbGFub21hIDwtIHJlYWRfZndmKCdOQ0RCUFVGX01lbGFub21hLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAgICAgICAgICAgICAgICAgICAgICAKc2tpbiA8LSByZWFkX2Z3ZignTkNEQlBVRl9PdFNraW4uMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKaG9kZ2V4dHIgPC0gcmVhZF9md2YoJ05DREJQVUZfSG9kZ0V4dHIuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKaG9kZ25kYWwgPC0gcmVhZF9md2YoJ05DREJQVUZfSG9kZ05kYWwuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKTkhMbmRhbCA8LSByZWFkX2Z3ZignTkNEQlBVRl9OSExOZGFsLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCk5ITGV4dHIgPC0gcmVhZF9md2YoJ05DREJQVUZfTkhMRXh0ci4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgoKYnJlYXN0IDwtICByZWFkX2Z3ZignTkNEQlBVRl9CcmVhc3QuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKdnVsdmEgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX1Z1bHZhLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCnZhZ2luYSA8LSAgcmVhZF9md2YoJ05DREJQVUZfVmFnaW5hLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCnBlbmlzIDwtICByZWFkX2Z3ZignTkNEQlBVRl9QZW5pcy4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpvdGxldWsgPC0gcmVhZF9md2YoJ05DREJQVUZfT3RMZXVrLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAKb3RoZXJhY3V0ZWxldWsgIDwtIHJlYWRfZndmKCdOQ0RCUFVGX090QWNMZXVrLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAKQUxMICA8LSByZWFkX2Z3ZignTkNEQlBVRl9BTHltTGV1ay4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgoKI0NvbWJpbmUgZGF0YSBmb3IgYWxsIHN1YnNpdGVzCmRhdCA8LSBiaW5kX3Jvd3MobGlwLCBtZWxhbm9tYSwgc2tpbiwgaG9kZ2V4dHIsIGhvZGduZGFsLCBOSExuZGFsLCBicmVhc3QsIAogICAgICAgICAgICAgICAgIHZ1bHZhLCB2YWdpbmEsIHBlbmlzLCBOSExleHRyLCBvdGxldWssIG90aGVyYWN1dGVsZXVrLCBBTEwpCgpybShsaXAsIG1lbGFub21hLCBza2luLCBob2RnZXh0ciwgaG9kZ25kYWwsIE5ITG5kYWwsIGJyZWFzdCwgdnVsdmEsIHZhZ2luYSwgCiAgIHBlbmlzLCBOSExleHRyLCBvdGxldWssIG90aGVyYWN1dGVsZXVrLCBBTEwpCgpwcmltX3NpdGVfdGV4dCA8LSBkYXRhX2ZyYW1lKFBSSU1BUllfU0lURSA9IGMoCiNOSEwgc2l0ZXMKIkMwMDAiLCAKIkMwMDEiLCAKIkMwMDIiLCAKIkMwMDMiLCAKIkMwMDQiLCAKIkMwMDUiLCAKIkMwMDYiLCAKIkMwMDgiLAoiQzAwOSIsIAoiQzAxOSIsIAoiQzAyMCIsIAoiQzAyMSIsCiJDMDIyIiwgCiJDMDIzIiwgCiJDMDI0IiwgCiJDMDI4IiwgCiJDMDI5IiwKIkMwMzAiLAoiQzAzMSIsCiJDMDM5IiwgCiJDMDQwIiwgCiJDMDQxIiwgCiJDMDQ4IiwKIkMwNDkiLCAKIkMwNTAiLCAKIkMwNTEiLCAKIkMwNTIiLCAKIkMwNTgiLCAKIkMwNTkiLAoiQzA2MCIsIAoiQzA2MSIsIAoiQzA2MiIsIAoiQzA2OCIsIAoiQzA2OSIsIAoiQzA3OSIsICAKIkMwOTgiLAoiQzA5OSIsCiJDMTExIiwKIkMxNDIiLAoiQzMwMCIsCiJDMzc5IiwKIkM0MjAiLAoiQzQyMiIsCiJDNDI0IiwKCiNza2luL21lbGFub21hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNDQwIiwgIkM0NDEiLCAiQzQ0MiIsICJDNDQzIiwgIkM0NDQiLCAiQzQ0NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNDQ2IiwgIkM0NDciLCAiQzQ0OCIsICJDNDQ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNicmVhc3QgLSBuaXBwbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM1MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZhZ2luYS92dWx2YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzUxMCIsICJDNTExIiwgIkM1MTIiLCAiQzUxOCIsICJDNTE5IiwgIkM1MjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3BlbmlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNjAwIiwgIkM2MDEiLCAiQzYwMiIsICJDNjA4IiwgIkM2MDkiLCAiQzYzOSIsCgoiQzc3MCIsCiJDNzcxIiwKIkM3NzIiLAoiQzc3MyIsCiJDNzc0IiwKIkM3NzUiLAoiQzc3OCIsCiJDNzc5IiksCgpTSVRFX1RFWFQgPSBjKAoiQzAwLjAgRXh0ZXJuYWwgTGlwOiBVcHBlciBOT1MiLAoiQzAwLjEgRXh0ZXJuYWwgTGlwOiBMb3dlciBOT1MiLAoiQzAwLjIgRXh0ZXJuYWwgTGlwOiBOT1MiLAoiQzAwLjMgTGlwOiBVcHBlciBNdWNvc2EiLAoiQzAwLjQgTGlwOiBMb3dlciBNdWNvc2EiLAoiQzAwLjUgTGlwOiBNdWNvc2EgTk9TIiwKIkMwMC42IExpcDogQ29tbWlzc3VyZSIsCiJDMDAuOCBMaXA6IE92ZXJsYXBwaW5nIiwKIkMwMC45IExpcCBOT1MiLAoiQzAxLjkgVG9uZ3VlOiBCYXNlIE5PUyIsCiJDMDIuMCBUb25ndWU6IERvcnNhbCBOT1MiLAoiQzAyLjEgVG9uZ3VlOiBCb3JkZXIsIFRpcCIsCiJDMDIuMiBUb25ndWU6IFZlbnRyYWwgTk9TIiwKIkMwMi4zIFRvbmd1ZTogQW50ZXJpb3IgTk9TIiwKIkMwMi40IExpbmd1YWwgVG9uc2lsIiwKIkMwMi44IFRvbmd1ZTogT3ZlcmxhcHBpbmciLAoiQzAyLjkgVG9uZ3VlOiBOT1MiLAoiQzAzLjAgR3VtOiBVcHBlciIsCiJDMDMuMSBHdW06IExvd2VyIiwKIkMwMy45IEd1bSBOT1MiLAoiQzA0LjAgTW91dGg6IEFudGVyaW9yIEZsb29yIiwKIkMwNC4xIE1vdXRoOiBMYXRlcmFsIEZsb29yIiwKIkMwNC44IE1vdXRoOiBPdmVybGFwcGluZyBGbG9vciIsCiJDMDQuOSBGbG9vciBvZiBNb3V0aCBOT1MiLAoiQzA1LjAgSGFyZCBQYWxhdGUiLAoiQzA1LjEgU29mdCBQYWxhdGUgTk9TIiwKIkMwNS4yIFV2dWxhIiwKIkMwNS44IFBhbGF0ZTogT3ZlcmxhcHBpbmciLAoiQzA1LjkgUGFsYXRlIE5PUyIsCiJDMDYuMCBDaGVlayBNdWNvc2EiLAoiQzA2LjEgTW91dGg6IFZlc3RpYnVsZSIsCiJDMDYuMiBSZXRyb21vbGFyIEFyZWEiLAoiQzA2LjggTW91dGg6IE90aGVyIE92ZXJsYXBwaW5nIiwKIkMwNi45IE1vdXRoIE5PUyIsCiJDMDcuOSBQYXJvdGlkIEdsYW5kIiwKICAiQzA5LjggVG9uc2lsOiBPdmVybGFwcGluZyIsCiAgIkMwOS45IFRvbnNpbCBOT1MiLAogICJDMTEuMSBOYXNvcGhhcnlueDogUG9zdGVyIFdhbGwiLCAKICAiQzE0LjIgV2FsZGV5ZXIgUmluZyIsCiAgIkMzMC4wIE5hc2FsIENhdml0eSIsCiAgIkMzNy45IFRoeW11cyIsCiJDNDIuMCBCbG9vZCIsCiAgIkM0Mi4yIFNwbGVlbiIsCiJDNDIuNCBIZW1hdG9wb2lldGljIE5PUyIsCgogI3NraW4KIkM0NC4wIFNraW4gb2YgbGlwLCBOT1MiLAoiQzQ0LjEgRXllbGlkIiwKIkM0NC4yIEV4dGVybmFsIGVhciIsCiJDNDQuMyBTa2luIG9mIGVhciBhbmQgdW5zcGVjaWZpZWQgcGFydHMgb2YgZmFjZSIsCiJDNDQuNCBTa2luIG9mIHNjYWxwIGFuZCBuZWNrIiwKIkM0NC41IFNraW4gb2YgdHJ1bmsiLAoiQzQ0LjYgU2tpbiBvZiB1cHBlciBsaW1iIGFuZCBzaG91bGRlciIsCiJDNDQuNyBTa2luIG9mIGxvd2VyIGxpbWIgYW5kIGhpcCIsCiJDNDQuOCBPdmVybGFwcGluZyBsZXNpb24gb2Ygc2tpbiIsCiJDNDQuOSBTa2luLCBOT1MiLCAKCiNicmVhc3QKIkM1MC4wIE5pcHBsZSIsCgojdnVsdmEvdmFnaW5hCiJDNTEuMCBMYWJpdW0gbWFqdXMiLAoiQzUxLjEgTGFiaXVtIG1pbnVzIiwKIkM1MS4yIENsaXRvcmlzIiwKIkM1MS44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiB2dWx2YSIsCiJDNTEuOSBWdWx2YSwgTk9TIiwKIkM1Mi45IFZhZ2luYSwgTk9TIiwKCiNwZW5pcwoiQzYwLjAgUHJlcHVjZSIsCiJDNjAuMSBHbGFucyBwZW5pcyIsCiJDNjAuMiBCb2R5IG9mIHBlbmlzIiwKIkM2MC44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiBwZW5pcyIsCiJDNjAuOSBQZW5pcyIsCiJDNjMuMiBTY3JvdHVtLCBOT1MiLAoKICAiQzc3LjAgTHltcGggTm9kZXM6IEhlYWRGYWNlTmVjayIsCiAgIkM3Ny4xIEludHJhdGhvcmFjaWMgTHltcGggTm9kZXMiLAogICJDNzcuMiBJbnRyYS1hYmRvbWluYWwgTHltcGhOb2RlcyIsCiAgIkM3Ny4zIEx5bXBoIE5vZGVzIG9mIGF4aWxsYSBvciBhcm0gIiwKICAiQzc3LjQgTHltcGggTm9kZXM6IExlZyIsCiAgIkM3Ny41IFBlbHZpYyBMeW1waCBOb2RlcyIsCiAgIkM3Ny44IEx5bXBoIE5vZGVzOiBtdWx0aXBsZSByZWdpb24iLAogICJDNzcuOSBMeW1waCBOb2RlIE5PUyIpKQoKCmRhdCA8LSBtZXJnZShkYXQsIHByaW1fc2l0ZV90ZXh0LCBieSA9ICJQUklNQVJZX1NJVEUiLCBhbGwueCA9IFRSVUUpIAoKcm0ocHJpbV9zaXRlX3RleHQpCgojIGNvbnZlcnQgbnVtZXJpYyB2YXJpYWJsZXMgZnJvbSBjaGFyYWN0ZXIgY2xhc3MgdG8gbnVtZXJpYyBjbGFzcwpudW1fdmFycyA8LSBjKCJBR0UiLCAiQ1JPV0ZMWSIsICJUVU1PUl9TSVpFIiwgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIkRYX1JYX1NUQVJURURfREFZUyIsICJEWF9TVVJHX1NUQVJURURfREFZUyIsCiAgICAgICAgICAgICAgIkRYX0RFRlNVUkdfU1RBUlRFRF9EQVlTIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLCAiRFhfUkFEX1NUQVJURURfREFZUyIsICAiUkFEX1JFR0lPTkFMX0RPU0VfQ0dZIiwKICAgICAgICAgICAgICAiUkFEX0JPT1NUX0RPU0VfQ0dZIiwgIlJBRF9FTEFQU0VEX1JYX0RBWVMiLCAiRFhfU1lTVEVNSUNfU1RBUlRFRF9EQVlTIiwgIkRYX0NIRU1PX1NUQVJURURfREFZUyIsIAogICAgICAgICAgICAgICJEWF9IT1JNT05FX1NUQVJURURfREFZUyIsICJEWF9PVEhFUl9TVEFSVEVEX0RBWVMiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwKICAgICAgICAgICAgICAiUkFEX05VTV9UUkVBVF9WT0wiKQoKZGF0W251bV92YXJzXSA8LSBsYXBwbHkoZGF0W251bV92YXJzXSwgYXMubnVtZXJpYykKCgojIGNvbnZlcnQgZmFjdG9yIHZhcmlhYmxlcyBmcm9tIGNoYXJhY3RlciBjbGFzcyB0byBmYWN0b3IgY2xhc3MKdmFycyA8LSBuYW1lcyhkYXQpCmZhY3RfdmFycyA8LSB2YXJzWyEodmFycyAlaW4lIG51bV92YXJzKV0gIyBiYXNpY2FsbHkgYWxsIG9mIHRoZSBub24tbnVtZXJpY3MKCmRhdFtmYWN0X3ZhcnNdIDwtIGxhcHBseShkYXRbZmFjdF92YXJzXSwgYXMuY2hhcmFjdGVyKQpkYXRbZmFjdF92YXJzXSA8LSBsYXBwbHkoZGF0W2ZhY3RfdmFyc10sIGFzLmZhY3RvcikKCmRhdCA8LSBkYXQgJT4lCiAgICAgICAgbXV0YXRlKEZBQ0lMSVRZX1RZUEVfRiA9IGZjdF9yZWNvZGUoRkFDSUxJVFlfVFlQRV9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tbXVuaXR5IENhbmNlciBQcm9ncmFtIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcHJlaGVuc2l2ZSBDb21tIENhIFByb2dyYW0iID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY2FkZW1pYy9SZXNlYXJjaCBQcm9ncmFtIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZWdyYXRlZCBOZXR3b3JrIENhIFByb2dyYW0iID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfTE9DQVRJT05fRiA9IGZjdF9yZWNvZGUoRkFDSUxJVFlfTE9DQVRJT05fQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ldyBFbmdsYW5kIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlkZGxlIEF0bGFudGljIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291dGggQXRsYW50aWMiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFYXN0IE5vcnRoIENlbnRyYWwiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFYXN0IFNvdXRoIENlbnRyYWwiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0IE5vcnRoIENlbnRyYWwiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0IFNvdXRoIENlbnRyYWwiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3VudGFpbiIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhY2lmaWMiID0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdXQgb2YgVVMiID0gIjAiKSkgJT4lCiAgICAgICAgbXV0YXRlKEZBQ0lMSVRZX0dFT0dSQVBIWSA9IGZjdF9jb2xsYXBzZShGQUNJTElUWV9MT0NBVElPTl9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3J0aGVhc3QiID0gYygiMSIsICIyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291dGgiID0gYygiMyIsICI3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlkd2VzdCIgPSBjKCI0IiwgIjUiLCAiNiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QiID0gYygiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoQUdFX0YgPSBjdXQoQUdFLCBjKDAsIDU0LCA2NCwgNzQsIDEwMCkpKSAlPiUKICAgICAgICBtdXRhdGUoQUdFXzQwID0gY3V0KEFHRSwgYygwLCA0MCwgMTAwKSkpICU+JQogICAgICAgIG11dGF0ZShTRVhfRiA9IGZjdF9yZWNvZGUoU0VYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWxlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmVtYWxlIiA9ICIyIikpICU+JQogICAgICAgIG11dGF0ZShSQUNFX0YgPSBmY3RfY29sbGFwc2UoUkFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpdGUiID0gYygiMDEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxhY2siID0gYygiMDIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXNpYW4iID0gYygiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMTAiLCAiMTEiLCAiMTIiLCAiMTMiLCAiMTQiLCAiMTUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxNiIsICIxNyIsICIyMCIsICIyMSIsICIyMiIsICIyNSIsICIyNiIsICIyNyIsICIyOCIsICIzMCIsICIzMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjMyIiwgIjk2IiwgIjk3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyL1VuayIgPSBjKCIwMyIsICI5OCIsICI5OSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1BBTklDID0gZmN0X2NvbGxhcHNlKFNQQU5JU0hfSElTUEFOSUNfT1JJR0lOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjEiLCAiMiIsICIzIiwgIjQiLCAiNSIsICI2IiwgIjciLCAiOCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSBjKCI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoSU5TVVJBTkNFX0YgPSBmY3RfcmVjb2RlKElOU1VSQU5DRV9TVEFUVVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcml2YXRlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVkaWNhaWQiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZWRpY2FyZSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIEdvdmVybm1lbnQiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShJTlNVUkFOQ0VfRiA9IGZjdF9yZWxldmVsKElOU1VSQU5DRV9GLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcml2YXRlIikpICU+JQogICAgICAgIG11dGF0ZShJTkNPTUVfRiA9IGZjdF9yZWNvZGUoTUVEX0lOQ19RVUFSXzEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMZXNzIHRoYW4gJDM4LDAwMCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQzOCwwMDAgLSAkNDcsOTk5IiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDQ4LDAwMCAtICQ2Miw5OTkiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkNjMsMDAwICsiID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKEVEVUNBVElPTl9GID0gZmN0X3JlY29kZShOT19IU0RfUVVBUl8xMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMSUgb3IgbW9yZSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTMgLSAyMC45JSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNyAtIDEyLjklIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMZXNzIHRoYW4gNyUiID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKFVfUl9GID0gZmN0X2NvbGxhcHNlKFVSX0NEXzEzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWV0cm8iID0gYygiMSIsICIyIiwgIjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVyYmFuIiA9IGMoIjQiLCAiNSIsICI2IiwgIjciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJ1cmFsIiA9IGMoIjgiLCAiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKENMQVNTX09GX0NBU0VfRiA9IGZjdF9jb2xsYXBzZShDTEFTU19PRl9DQVNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsX1BhcnRfUHJpbSA9IGMoIjEwIiwgIjExIiwgIjEyIiwgIjEzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxNCIsICIyMCIsICIyMSIsICIyMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJfRmFjaWxpdHkgPSBjKCIwMCIpKSkgJT4lCiAgICAgICAgbXV0YXRlKEdSQURFX0YgPSBmY3RfcmVjb2RlKEdSQURFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIEk6IFdlbGwgRGlmZiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSUk6IE1vZCBEaWZmIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJSUk6IFBvb3IgRGlmZiIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSVY6IFVuZGlmZi9BbmFwbGFzdGljIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOQS9Vbmtvd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1RPTE9HWV9GID0gZmN0X2luZnJlcShISVNUT0xPR1kpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0YgPSBmYWN0b3IoSElTVE9MT0dZX0YpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0ZfTElNID0gZmN0X2x1bXAoSElTVE9MT0dZX0YsIHByb3AgPSAwLjA1KSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1QgPSBmY3RfcmVjb2RlKFROTV9DTElOX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9UID0gZmN0X3JlbGV2ZWwoVE5NX0NMSU5fVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9OID0gZmN0X3JlY29kZShUTk1fQ0xJTl9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fTSA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1QgPSBmY3RfcmVjb2RlKFROTV9QQVRIX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9UID0gZmN0X3JlbGV2ZWwoVE5NX1BBVEhfVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9OID0gZmN0X3JlY29kZShUTk1fUEFUSF9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfTSA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1NUQUdFX0dST1VQID0gZmN0X3JlY29kZShUTk1fQ0xJTl9TVEFHRV9HUk9VUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1NUQUdFX0dST1VQID0gZmN0X3JlY29kZShUTk1fUEFUSF9TVEFHRV9HUk9VUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1BUkdJTlMgPSBmY3RfcmVjb2RlKFJYX1NVTU1fU1VSR0lDQUxfTUFSR0lOUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFJlc2lkdWFsIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlc2lkdWFsLCBOT1MiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWljcm9zY29waWMgUmVzaWQiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFjcm9zY29waWMgUmVzaWQiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IGV2YWx1YWJsZSIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1BUkdJTlNfWU4gPSBmY3RfY29sbGFwc2UoUlhfU1VNTV9TVVJHSUNBTF9NQVJHSU5TLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMSIsICIyIiwgIjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnL1Vuay9OQSIgPSBjKCI3IiwgIjgiLCAiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFJFQURNX0hPU1BfMzBfREFZU19GID0gZmN0X3JlY29kZShSRUFETV9IT1NQXzMwX0RBWVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9fU3VyZ19vcl9Ob19SZWFkbWl0IiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbnBsYW5fUmVhZG1pdF9TYW1lIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFuX1JlYWRtaXRfU2FtZSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxhblVucGxhbl9TYW1lIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI0IikpICU+JQogICAgICAgIG11dGF0ZShSWF9TVU1NX1JBRElBVElPTl9GID0gZmN0X3JlY29kZShSWF9TVU1NX1JBRElBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmVhbSBSYWRpYXRpb24iID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaW9hY3RpdmUgSW1wbGFudHMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaW9pc290b3BlcyIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZWFtICsgSW1wIG9yIElzb3RvcGVzIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZGlhdGlvbiwgTk9TIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFBVRl8zMF9EQVlfTU9SVF9DRF9GID0gZmN0X3JlY29kZShQVUZfMzBfREFZX01PUlRfQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxpdmVfMzAiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYWRfMzAiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFBVRl85MF9EQVlfTU9SVF9DRF9GID0gZmN0X3JlY29kZShQVUZfOTBfREFZX01PUlRfQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxpdmVfOTAiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYWRfOTAiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKExZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YgPSBmY3RfcmVjb2RlKExZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmVnX0x5bXBoVmFzY19JbnYiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9zX0x1bXBoVmFzY19JbnYiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiA9IGZjdF9yZWNvZGUoUlhfSE9TUF9TVVJHX0FQUFJfMjAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9fU3VyZyIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvYm90X0Fzc2lzdCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvYm90X3RvX09wZW4iID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbmRvX0xhcCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVuZG9fTGFwX3RvX09wZW4iID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVuX1Vua25vd24iID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShBbGwgPSAiQWxsIikgJT4lCiAgICAgICAgbXV0YXRlKEFsbCA9IGZhY3RvcihBbGwpKSAlPiUKICAgICAgICBtdXRhdGUoUkVBU09OX0ZPUl9OT19TVVJHRVJZX0YgPSBmY3RfcmVjb2RlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHBlcmZvcm1lZCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBub3QgcmVjb21tZW5kZWQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcgZHVlIHRvIHB0IGZhY3RvcnMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcsIHB0IGRpZWQiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcmVjLCBub3QgZG9uZSIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIHB0IHJlZnVzZWQiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcmVjLCB1bmsgaWYgZG9uZSIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR0VSWV9ZTiA9IGlmZWxzZShSRUFTT05fRk9SX05PX1NVUkdFUlkgPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSRUFTT05fRk9SX05PX1NVUkdFUlkgPT0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWtuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19URiA9IGNhc2Vfd2hlbihTVVJHRVJZX1lOID09ICJZZXMiIH4gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVJHRVJZX1lOID09ICJObyIgfiBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTkEpKSAgJT4lCiAgICAgICAgbXV0YXRlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OX0YgPSBmY3RfcmVjb2RlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBwZXJmb3JtZWQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBub3QgcmVjb21tZW5kZWQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFJhZCBkdWUgdG8gcHQgZmFjdG9ycyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmFkLCBwdCBkaWVkIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCBub3QgZG9uZSIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHJlYywgcHQgcmVmdXNlZCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHJlYywgdW5rIGlmIGRvbmUiID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGlmZWxzZShSRUFTT05fRk9SX05PX1JBRElBVElPTiA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OID09ICI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdSQURfU0VRX0YgPSBmY3RfcmVjb2RlKFJYX1NVTU1fU1VSR1JBRF9TRVEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIG9yIFN1cmcgb3IgUmFkIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgU3VyZyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIGJlZm9yZSBSYWQiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZyIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRyYW9wIFJhZCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRyYW9wIFJhZCBwbHVzIG90aGVyIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUSA9IGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBBbG9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkFESUFUSU9OX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBBbG9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBUcmVhdG1lbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIiKSkpKSkpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRID0gZmN0X3JlbGV2ZWwoU1VSR19SQURfU0VRLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBBbG9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBBbG9uZSIpKSAlPiUKICAgICAgICBtdXRhdGUoQ0hFTU9fWU4gPSBmY3RfY29sbGFwc2UoUlhfU1VNTV9DSEVNTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIiA9IGMoIjAwIiwgIjgyIiwgIjg1IiwgIjg2IiwgIjg3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMDEiLCAiMDIiLCAiMDMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVrbiIgPSBjKCI4OCIsICI5OSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKElNTVVOT19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX0lNTVVOT1RIRVJBUFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwMCIsICI4MiIsICI4NSIsICI4NiIsICI4NyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjAxIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVa24iID0gYygiODgiLCAiOTkiKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVFfQyA9IGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcsIE5vIHJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJBRElBVElPTl9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkLCBObyBTdXJnLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gU3VyZywgTm8gUmFkLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjMiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZywgTm8gcmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkFESUFUSU9OX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQsIE5vIFN1cmcsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiTm8iICYgUkFESUFUSU9OX1lOID09ICJObyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBTdXJnLCBObyBSYWQsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjIiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgdGhlbiBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMyIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjQiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmcsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIikpKSkpKSkpKSkpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUV9DID0gZmN0X2luZnJlcShTVVJHX1JBRF9TRVFfQykpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBhcy5udW1lcmljKFRVTU9SX1NJWkUpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gaWZlbHNlKFRfU0laRSA9PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBUdW1vciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+IDAgJiBUX1NJWkUgPCAxMCB8IFRfU0laRSA9PSA5OTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8IDEgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDEwICYgVF9TSVpFIDwgMjAgfCBUX1NJWkUgPT0gOTkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEtMiBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDIwICYgVF9TSVpFIDwgMzAgfCBUX1NJWkUgPT0gOTkzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyLTMgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gMzAgJiBUX1NJWkUgPCA0MCB8IFRfU0laRSA9PSA5OTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzLTQgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDQwICYgVF9TSVpFIDwgNTAgfCBUX1NJWkUgPT0gOTk1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQtNSBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDUwICYgVF9TSVpFIDwgNjAgfCBUX1NJWkUgPT0gOTk2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI1LTYgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gNjAgJiBUX1NJWkUgPD0gOTg3IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUX1NJWkUgPT0gOTgwIHwgVF9TSVpFID09IDk4OSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVF9TSVpFID09IDk5NywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPjYgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPT0gOTg4IHwgVF9TSVpFID09IDk5OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5BX3VuayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWNyb3Njb3BpYyBmb2N1cyIpKSkpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBmYWN0b3IoVF9TSVpFKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGZjdF9yZWxldmVsKFRfU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBUdW1vciIsICJNaWNyb3Njb3BpYyBmb2N1cyIsICI8IDEgY20iLCAiMS0yIGNtIiwgIjItMyBjbSIsICIzLTQgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNC01IGNtIiwgIjUtNiBjbSIsICI+NiBjbSIsICJOQV91bmsiKSkgJT4lCiAgICAgICAgbXV0YXRlKG1ldHNfYXRfZHggPSBjYXNlX3doZW4oQ1NfTUVUU19EWF9MVU5HID09ICIxIiB+ICJMdW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0JPTkUgPT0gIjEiIH4gIkJvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTX01FVFNfRFhfQlJBSU4gPT0gIjEiIH4gIkJyYWluIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0xJVkVSID09ICIxIiB+ICJMaXZlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+ICJOb25lL090aGVyL1Vuay9OQSIpKSAlPiUKICAgICAgICBtdXRhdGUoTUVESUNBSURfRVhQTl9DT0RFID0gZmN0X3JlY29kZShNRURJQ0FJRF9FWFBOX0NPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbi1FeHBhbnNpb24gU3RhdGUiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKYW4gMjAxNCBFeHBhbnNpb24gU3RhdGVzIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWFybHkgRXhwYW5zaW9uIFN0YXRlcyAoMjAxMC0xMykiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMYXRlIEV4cGFuc2lvbiBTdGF0ZXMgKD4gSmFuIDIwMTQpIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VwcHJlc3NlZCBmb3IgQWdlcyAwIC0gMzkiID0gIjkiKSkgICU+JQogICAgICAgIG11dGF0ZShFWFBOX0dST1VQID0gIGNhc2Vfd2hlbihNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDE0IiwgIjIwMTUiKSB+ICJQb3N0LUV4cGFuc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMDkiLCAiMjAxMCIsICIyMDExIiwgIjIwMTIiLCAiMjAxMyIpIH4gIlByZS1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkVhcmx5IEV4cGFuc2lvbiBTdGF0ZXMgKDIwMTAtMTMpIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiLCAiMjAxNCIsICIyMDE1IikgfiAiUG9zdC1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJFYXJseSBFeHBhbnNpb24gU3RhdGVzICgyMDEwLTEzKSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDA0IiwgIjIwMDUiLCAiMjAwNiIsICIyMDA3IiwgIjIwMDgiLCAiMjAwOSIpIH4gIlByZS1FeHBhbnNpb24iLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTm9uLUV4cGFuc2lvbiBTdGF0ZSIpIH4gIlByZS1FeHBhbnNpb24iLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIpIH4gIlByZS1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgJWluJSBjKCJMYXRlIEV4cGFuc2lvbiBTdGF0ZXMgKD4gSmFuIDIwMTQpIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAxNCIsICIyMDE1IikgfiAiRXhjbHVkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgPT0gIlN1cHByZXNzZWQgZm9yIEFnZXMgMCAtIDM5IiB+ICJFeGNsdWRlIikpICU+JQogIAogIG11dGF0ZShwcmVfMjAxNCA9IFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMDkiLCAiMjAxMCIsICIyMDExIiwgIjIwMTIiLCAiMjAxMyIpKSAlPiUKICAKICBtdXRhdGUobWV0c19hdF9keF9GID0gaWZlbHNlKG1ldHNfYXRfZHggPT0gIk5vbmUvT3RoZXIvVW5rL05BIiwgRkFMU0UsIFRSVUUpKSAlPiUgCiAgCiAgbXV0YXRlKFR4X1lOID0gaWZlbHNlKFNVUkdfUkFEX1NFUSA9PSAiTm8gVHJlYXRtZW50IiAmIENIRU1PX1lOID09ICJObyIgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICBJTU1VTk9fWU4gPT0gIk5vIiwgRkFMU0UsIAogICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoQ0hFTU9fWU4gPT0gIlVrbiIsIE5BLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpKSkKCmZhY3RfdmFyc18yIDwtIGMoIkZBQ0lMSVRZX1RZUEVfRiIsICJGQUNJTElUWV9MT0NBVElPTl9GIiwgIkFHRV9GIiwgIlNFWF9GIiwgIlJBQ0VfRiIsCiAgICAgICAgICAgICAgICAgIkhJU1BBTklDIiwgIklOU1VSQU5DRV9GIiwgIklOQ09NRV9GIiwgIkVEVUNBVElPTl9GIiwgIlVfUl9GIiwKICAgICAgICAgICAgICAgICAiQ0RDQ19UT1RBTF9CRVNUIiwgIkNMQVNTX09GX0NBU0VfRiIsICJZRUFSX09GX0RJQUdOT1NJUyIsICJQUklNQVJZX1NJVEUiLCAiSElTVE9MT0dZIiwKICAgICAgICAgICAgICAgICAiQkVIQVZJT1IiLCAiR1JBREVfRiIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwKICAgICAgICAgICAgICAgICAiTUFSR0lOUyIsICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsICJSWF9IT1NQX1NVUkdfQVBQUl8yMDEwX0YiLCAibWV0c19hdF9keCIpCgoKZGF0IDwtIGRhdCAlPiUKICAgICAgICBtdXRhdGVfYXQoZmFjdF92YXJzXzIsIGZ1bnMoZmFjdG9yKC4pKSkKCmBgYAoKCiMgRXh0cmFjdCBEYXRhIG9mIEludGVyZXN0CgpgYGB7cn0KCgojIE5vbi1Ib2Rna2luIEx5bXBob21hIFNpdGVzCnNpdGVfY29kZSA8LSBjKCAKI2FkZGl0aW9uYWwgc2l0ZXMKCiAjbGlwICAKICAiQzAwMCIsICJDMDAxIiwgIkMwMDIiLCAiQzAwMyIsICJDMDA0IiwgIkMwMDUiLCJDMDA2IiwgIkMwMDgiLCJDMDA5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKI3NraW4vbWVsYW5vbWEKICAiQzQ0MCIsICJDNDQxIiwgIkM0NDIiLCAiQzQ0MyIsICJDNDQ0IiwgIkM0NDUiLCAiQzQ0NiIsICJDNDQ3IiwgIkM0NDgiLCAiQzQ0OSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogI2JyZWFzdCAtIG5pcHBsZQogICJDNTAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiN2YWdpbmEvdnVsdmEKICAiQzUxMCIsICJDNTExIiwgIkM1MTIiLCAiQzUxOCIsICJDNTE5IiwgIkM1MjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKI3BlbmlzCiAiQzYwMCIsICJDNjAxIiwgIkM2MDIiLCAiQzYwOCIsICJDNjA5IiwgIkM2MzkiKQoKI215Y29zaXMgZnVuZ29pZGVzLCBTZXphcnkgc3luZHJvbWUsIHN1YmN1dGFuZW91cyBwYW5uaWN1bGl0aXMtbGlrZSBULWNlbGwgbHltcGhvbWEsCiNjdXRhbmVvdXMgVC1jZWxsIGx5bXBob21hLCBOT1MsIHByaW1hcnkgY3V0YW5lb3VzIENEMzArVC1jZWxsIGx5bXBob21hLCAKI05LL1QtY2VsbCBseW1waG9tYSwgcHJpbWFyeSBjdXRhbmVvdXMgZ2FtbWEtZGVsdGEgVC1jZWxsIGx5bXBob21hLCAKI2FuZCBibGFzdGljIE5LIGNlbGwgbHltcGhvbWEsIHJlc3BlY3RpdmVseQoKIyI5NzAwIiA9IE15Y29zaXMgRnVuZ29pZGVzCiAgIyBwYWdldG9pZCByZXRpY3Vsb3NpcwoKIyI5NzAxIiA9IFNlemFyeSBTeW5kcm9tZQogICMgU2V6YXJ5IGRpc2Vhc2UKCiMiOTcwOCIgPSBTdWJjdXRhbmVvdXMgcGFubmljdWxpdGlzbGlrZSBULWNlbGwgbHltcGhvbWEKCiMiOTcwOSIgPSBDdXRhbmVvdXMgVC1jZWxsIGx5bXBob21hLCBOT1MgCiAgIyBDdXRhbmVvdXMgbHltcGhvbWEsIE5PUyAoQzQ0Ll8pOyBQcmltYXJ5IGN1dGFuZW91cyBDRDQtcG9zaXRpdmUgc21hbGwvbWVkaXVtCiAgIyBULWNlbGwgbHltcGhvbWE7IFByaW1hcnkgY3V0YW5lb3VzIENEOC1wb3NpdGl2ZSBhZ2dyZXNzaXZlCiAgIyBlcGlkZXJtb3Ryb3BpYyBjeXRvdG94aWMgVC1jZWxsIGx5bXBob21hCgojIjk3MTgiID0gUHJpbWFyeSBjdXRhbmVvdXMgQ0QzMCsgVC1jZWxsIGx5bXBob3Byb2xpZmVyYXRpdmUgZGlzb3JkZXIgCiAgIyBMeW1waG9tYXRvaWQgcGFwdWxvc2lzIChDNDQuXyksIFByaW1hcnkgY3V0YW5lb3VzIGFuYXBsYXN0aWMgbGFyZ2UgY2VsbCwKICAjIGx5bXBob21hIChDNDQuXyksIFByaW1hcnkgY3V0YW5lb3VzIENEMzArIGxhcmdlIFQtY2VsbCBseW1waG9tYSAoQzQ0Ll8pCgoKIyI5NzI2IiA9IFByaW1hcnkgY3V0YW5lb3VzIGdhbW1hLWRlbHRhIFQtY2VsbCBseW1waG9tYQoKaGlzdG9fY29kZSA8LSBjKCI5NzAxIikKCmJlaGF2aW9yX2NvZGUgPC0gYygiMyIpCgpkYXRhIDwtIGRhdCAlPiUKICAgICAgICBmaWx0ZXIoQkVIQVZJT1IgJWluJSBiZWhhdmlvcl9jb2RlKSAlPiUKICAgICAgICBmaWx0ZXIoUFJJTUFSWV9TSVRFICVpbiUgc2l0ZV9jb2RlKSAlPiUKICAgICAgICBmaWx0ZXIoSElTVE9MT0dZICVpbiUgaGlzdG9fY29kZSkgJT4lCiAgICAgICAgI2ZpbHRlcihBR0UgPj0gMTgpICU+JQogICAgICAgIGZpbHRlcihpcy5uYShQVUZfVklUQUxfU1RBVFVTKSA9PSBGQUxTRSkgJT4lCiAgICAgICAgZmlsdGVyKGlzLm5hKERYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUykgPT0gRkFMU0UpICAlPiUKICAgICAgICBmaWx0ZXIoU0VRVUVOQ0VfTlVNQkVSID09ICIwMCIpIAoKI2ZpbGVfcGF0aCA8LSBjKCIvVXNlcnMvYmVhc3RhdGxpZmUvR29vZ2xlIERyaXZlL1Blbm4vUmVzZWFyY2gvQmFyYmllcmkvTkNEQiIpCiNzYXZlKGRhdGEsCiMgICAgICBmaWxlID0gcGFzdGUwKGZpbGVfcGF0aCwgIi9DVENMX2RhdGEuUmRhIikpCmBgYAoKYGBge3IgbG9hZERhdGF9CiNsb2FkKCJNRl9kYXRhLlJkYSIpCmBgYAoKCkRhdGEgaW5jbHVkaW5nIHNraW4gdHVtb3JzIHdhcyBvYnRhaW5lZCBmcm9tIHRoZSBOQ0JEIG9uIE9jdG9iZXIgNywgMjAxOS4gQ2FzZXMgdGhhdCB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgYW5hbHlzaXMgd2VyZSB0aG9zZSB3aXRoOgoKMS4gU2l0ZSBjb2RlczogYHIgc2l0ZV9jb2RlYAoyLiBIaXN0b2xvZ3kgY29kZXM6IGByIGhpc3RvX2NvZGVgCjMuIEJlaGF2aW9yIGNvZGVzOiBgciBiZWhhdmlvcl9jb2RlYAoKClBhdGllbnRzIHdlcmUgZXhjbHVkZWQgaWYgdGhleSBkaWRuJ3QgaGF2ZSB2YWx1ZXMgZm9yIGVpdGhlciBmb2xsb3cgdXAgb3Igdml0YWwgc3RhdHVzLgoKUGF0aWVudHMgd2VyZSBleGNsdWRlZCBpZiB0aGV5IGhhZCBzdXJnZXJ5IHRvIGEgZGlzdGFudCBzaXRlIHVzaW5nIGBSWF9TVU1NX1NVUkdfT1RIX1JFR0RJU2AuIFRoaXMgd2FzIGRvbmUgdG8gYXZvaWQgY29uZm91bmRpbmcgb2YgZGlmZmVyZW50IHN1cmdpY2FsIHByb2NlZHVyZXMuIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gc3VyZ2VyeSBhdCB0aGUgcHJpbWFyeSBzaXRlLiBUaGVzZSBkaXN0YW50IHNpdGUgc3VyZ2VyaWVzIHdlcmUgYmVpbmcgY291bnRlZCBpbiB0aGUgc3VyZ2VyeS9yYWRpYXRpb24gc2VxdWVuY2UgYW5kIHRodXMgdG8gc2ltcGxpZnkgYW5hbHlzaXMgdGhleSB3ZXJlIHJlbW92ZWQuIAoKYGBge3J9CgpkYXRhICU+JQogICAgICAgIENyZWF0ZVRhYmxlT25lKGRhdGEgPSAuLAogICAgICAgICAgICAgICAgICAgICB2YXJzID0gYygiUlhfU1VNTV9TVVJHX09USF9SRUdESVMiKSwKICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZU5BID0gVFJVRSkgJT4lCiAgICAgICAgcHJpbnQoLiwKICAgICAgICAgICAgICBzaG93QWxsTGV2ZWxzID0gVFJVRSkKCmRhdGEgPC0gZGF0YSAlPiUKICAgICAgICBmaWx0ZXIoUlhfU1VNTV9TVVJHX09USF9SRUdESVMgPT0gIjAiKSAKYGBgCgoKUmFjZSB3YXMgZ3JvdXBlZCBhcyB3aGl0ZSwgYmxhY2ssIGFzaWFuLCBvdGhlci91bmtub3duClN0YWdlIHdhcyBncm91cGVkIGludG8gMCwgSSwgSUksIElJSSwgSVYsIE5BX1Vua25vd24sIHN0YWdlIDAgd2FzIHJlbW92ZWQKV2hldGhlciBzdXJnZXJ5IHdhcyBwZXJmb3JtZWQgd2FzIGJhc2VkIG9uIHRoZSBgUkVBU09OX0ZPUl9OT19TVVJHRVJZYCB2YXJpYWJsZS4gVGhlIGBTVVJHRVJZX1lOYCB2YXJpYWJsZSB3YXMgY2xhc3NpZmllZCBhcyAnWWVzJywgJ05vJywgb3IgJ1Vua25vd24nLgoKCldoZXRoZXIgcmFkaWF0aW9uIHdhcyBwZXJmb3JtZWQgd2FzIGJhc2VkIG9uIHRoZSBgUkVBU09OX0ZPUl9OT19SQURJQVRJT05gIHZhcmlhYmxlLiBUaGUgYFJBRElBVElPTl9ZTmAgdmFyaWFibGUgd2FzIGNsYXNzaWZpZWQgYXMgJ1llcycsICdObycsIG9yICdVbmtub3duJy4KCgoKI1RhYmxlIG9mIHZhcmlhYmxlcyBmb3IgYWxsIGNhc2VzOgoKYGBge3J9CmRhdGEgPC0gZGF0YSAlPiUgZHJvcGxldmVscygpCgpwX3RhYmxlKGRhdGEsCiAgICAgICAgdmFycyA9IGMoIkZBQ0lMSVRZX1RZUEVfRiIsICJGQUNJTElUWV9MT0NBVElPTl9GIiwgIkZBQ0lMSVRZX0dFT0dSQVBIWSIsICAiQUdFIiwgIkFHRV9GIiwgIkFHRV80MCIsCiAgICAgICAgICAgICAgICAgIlNFWF9GIiwgIlJBQ0VfRiIsICJISVNQQU5JQyIsICJJTlNVUkFOQ0VfRiIsIAogICAgICAgICAgICAgICAgICJJTkNPTUVfRiIsICJFRFVDQVRJT05fRiIsICJVX1JfRiIsICJDUk9XRkxZIiwgIkNEQ0NfVE9UQUxfQkVTVCIsCiAgICAgICAgICAgICAgICAgIlNJVEVfVEVYVCIsICAiSElTVE9MT0dZIiwgIkJFSEFWSU9SIiwgIkdSQURFX0YiLCAKICAgICAgICAgICAgICAgICAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiVE5NX0NMSU5fVCIsICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLAogICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9TVEFHRV9HUk9VUCIsICJUTk1fUEFUSF9UIiwgIlROTV9QQVRIX04iLCAiVE5NX1BBVEhfTSIsCiAgICAgICAgICAgICAgICAgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwgIkRYX1JYX1NUQVJURURfREFZUyIsICJEWF9TVVJHX1NUQVJURURfREFZUyIsCiAgICAgICAgICAgICAgICAgIkRYX0RFRlNVUkdfU1RBUlRFRF9EQVlTIiwgIk1BUkdJTlMiLCAiTUFSR0lOU19ZTiIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwKICAgICAgICAgICAgICAgICAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCAiUlhfU1VNTV9SQURJQVRJT05fRiIsICJQVUZfMzBfREFZX01PUlRfQ0RfRiIsCiAgICAgICAgICAgICAgICAgIlBVRl85MF9EQVlfTU9SVF9DRF9GIiwgIkRYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyIsIAogICAgICAgICAgICAgICAgICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsICJTVVJHX1JBRF9TRVEiLAogICAgICAgICAgICAgICAgICJTVVJHX1JBRF9TRVFfQyIsICJTVVJHRVJZX1lOIiwgIlJBRElBVElPTl9ZTiIsICJDSEVNT19ZTiIsICJJTU1VTk9fWU4iLCAiVHhfWU4iLCAibWV0c19hdF9keCIsCiAgICAgICAgICAgICAgICAgIk1FRElDQUlEX0VYUE5fQ09ERSIsICJFWFBOX0dST1VQIiwgIllFQVJfT0ZfRElBR05PU0lTIikpCmBgYAoKCiNLYXBsYW4gTWVpZXIgQW5hbHlzaXMKCgojI0FsbAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQWxsIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRmFjaWxpdHkgVHlwZQpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJGQUNJTElUWV9UWVBFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNGYWNpbGl0eSBMb2NhdGlvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfTE9DQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0ZhY2lsaXR5IEdlb2dyYXBoeQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfR0VPR1JBUEhZIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQWdlIEdyb3VwCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJBR0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0FnZSBHcm91cApgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJBR0VfNDAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNHZW5kZXIKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNFWF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUkFDRV9GCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSQUNFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNIaXNwYW5pYwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiSElTUEFOSUMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNJbnN1cmFuY2UgU3RhdHVzCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJJTlNVUkFOQ0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNJbmNvbWUKCmBgYHtyfQpjbGFzcyhkYXRhJElOQ09NRV9GKQp1bmlfdmFyKHRlc3RfdmFyID0gIklOQ09NRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRWR1Y2F0aW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJFRFVDQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1VyYmFuL1J1cmFsCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJVX1JfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsYXNzICh0cmVhdG1lbnQgYXQgcGVyZm9ybWluZyBmYWNpbGl0eSkKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkNMQVNTX09GX0NBU0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1llYXIKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIllFQVJfT0ZfRElBR05PU0lTIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUHJpbWFyeSBTaXRlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTSVRFX1RFWFQiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKCiMjSGlzdG9sb2d5CgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiSElTVE9MT0dZX0ZfTElNIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQmVoYXZpb3IKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkJFSEFWSU9SIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjR3JhZGUKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJHUkFERV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgVCBTdGFnZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fVCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsaW5pY2FsIE4gU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX04iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDbGluaWNhbCBNIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fQ0xJTl9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgU3RhZ2UgR3JvdXAKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX1NUQUdFX0dST1VQIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBUIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9UIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBOIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9OIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBNIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBTdGFnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIk1BUkdJTlMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zIFllcy9ObwpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiTUFSR0lOU19ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojIzMwIERheSBSZWFkbWlzc2lvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gVHlwZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfU1VNTV9SQURJQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNMeW1waG92YXNjdWxhciBJbnZhc2lvbgoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNFbmRvc2NvcGljL1JvYm90aWMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1N1cmdlcnkgUmFkaWF0aW9uIFNlcXVlbmNlIAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU1VSR19SQURfU0VRIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjU3VyZ2VyeSBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNVUkdFUllfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gWWVzL05vCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSQURJQVRJT05fWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDaGVtbyBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkNIRU1PX1lOIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCgojI1RyZWF0bWVudCBZZXMvTm8KYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVHhfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNZXRhc3Rhc2VzIGF0IER4CmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIm1ldHNfYXRfZHhfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgo8IS0tICMjVHVtb3IgU2l6ZSAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiVF9TSVpFIiwgZGF0YV9pbXAgPSBkYXRhKSAtLT4KPCEtLSBgYGAgLS0+CgojVHVtb3Igc3BlY2lmaWMgVmFyaWFibGVzCgoKIyMjTm9kZSBTaXplCgoKI0NveCBQcm9wb3J0aW9uYWwgSGF6YXJkIFJhdGlvCgojI01vZGVsICMxCgojIyNGdWxsIGFuYWx5c2lzCgpgYGB7cn0KbW9kZWxfb25lIDwtIGNveHBoKFN1cnYoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTLCBQVUZfVklUQUxfU1RBVFVTID09IDApCiAgICAgICAgICAgICAgICAgICAgIH4gU1VSR19SQURfU0VRICsgSU5TVVJBTkNFX0YgKyBBR0UgKyBTRVhfRiArIFJBQ0VfRiArIElOQ09NRV9GICsgVV9SX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GLAogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSkKbW9kZWxfb25lICU+JSBzdW1tYXJ5KCkKCgpgYGAKCiMjI1N1bW1hcnkgb2YgTW9kZWwKCmBgYHtyfQptb2RlbF9vbmUgJT4lCiAgICAgICAgdGlkeSguLCBleHBvbmVudGlhdGUgPSBUUlVFKSAlPiUKICAgICAgICBzZWxlY3QodGVybSwgZXN0aW1hdGUsIGNvbmYubG93LCBjb25mLmhpZ2gsIHAudmFsdWUpICU+JQogICAgICAgIHJlbmFtZShWYXJpYWJsZSA9IHRlcm0sCiAgICAgICAgICAgICAgIEhhemFyZF9SYXRpbyA9IGVzdGltYXRlKSAlPiUKICAgICAgICB0YmxfZGYgJT4lCiAgICAgICAgcHJpbnQobiA9IG5yb3coLikpCgpgYGAKCiMjIExpbmVhciBSZWdyZXNzaW9uIApgYGB7cn0KCiNvbmx5IGluY2x1ZGUgcm93cyB3aXRoIGtub3duIHRyZWF0bWVudCBpbmZvcm1hdGlvbiwgbiA9IDgyCmRhdGEyIDwtIGRhdGEgJT4lIGZpbHRlcihTVVJHRVJZX1lOICE9ICJVa24iICYgUkFESUFUSU9OX1lOICE9ICJVa24iCiAgICAgICAgICAgICAgICAgICAgICAgICAmIENIRU1PX1lOICE9ICJVa24iKQoKIyBpbmNsdWRlIG9ubHkgdmFyaWFibGVzIHdpdGggZGF0YSBhdmFpbGFibGUgZm9yIGF0IGxlYXN0IDc1JSBvZiBjYXNlcyAKIyBmcm9tIHRoZSBmb2xsb3dpbmcgc2V0IG9mIHZhcmlhYmxlcyBvZiBpbnRlcmVzdDoKCiMjIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0dFT0dSQVBIWSArIENST1dGTFkgKyAKIyMgICAgICAgICAgICAgICAgIERYX1NUQUdJTkdfUFJPQ19EQVlTICsgCiMjICAgICAgICAgICAgICAgICBDSEVNT19ZTiArIFJBRElBVElPTl9ZTiArIFNVUkdFUllfWU4gKyBJTU1VTk9fWU4gKwojIyAgICAgICAgICAgICAgICAgQUdFICsgU0VYX0YgKyBSQUNFX0YgKyBISVNQQU5JQyArIElOU1VSQU5DRV9GICsgSU5DT01FX0YgKyAKIyMgICAgICAgICAgICAgICAgIEVEVUNBVElPTl9GICsgWUVBUl9PRl9ESUFHTk9TSVMgKyBTSVRFX1RFWFQgKyBHUkFERV9GCgpsZW5ndGgod2hpY2goaXMubmEoZGF0YTIkR1JBREVfRikpKSAvIG5yb3coZGF0YTIpCgojIGV4Y2x1ZGVkIHRoZSBmb2xsb3dpbmcgaW4gdGhpcyBhbmFseXNpcyBkdWUgdG8gbWlzc2luZyBkYXRhOiAKIyAgRFhfU1RBR0lOR19QUk9DX0RBWVMKCiMgYmVjYXVzZSBHUkFERV9GIGlzIGluY2x1ZGVkIGluIHRoaXMgbW9kZWwsIGV4Y2x1ZGVkIHVua25vd25zCmRhdGEzIDwtIGRhdGEyICU+JSBmaWx0ZXIoR1JBREVfRiAhPSAiTkEvVW5rb3duIikKCmZpdF9zdXJ2IDwtIGxtKERYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyB+CiAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArCiAgICAgICAgICAgICAgICAgU1VSR0VSWV9ZTiArIAogICAgICAgICAgICAgICAgIEFHRV9GICsgIElOQ09NRV9GICsgCiAgICAgICAgICAgICAgICAgRURVQ0FUSU9OX0YgKyBZRUFSX09GX0RJQUdOT1NJUyArIFNJVEVfVEVYVCArIEdSQURFX0YsCiAgIGRhdGEgPSBkYXRhMykKCnN1bW1hcnkoZml0X3N1cnYpICMgUl4yID0gMC4zMDI1ICwgcCA9IDIuNzEyZS0wOAoKIyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyB3ZXJlIGV4Y2x1ZGVkIHRvIAojIGltcHJvdmUgdGhlIFItc3F1YXJlZCBvZiB0aGUgcmVncmVzc2lvbiAoaW5pdGlhbGx5IFJeMiA9ICk6CiMgSElTUEFOSUMgKyBJTlNVUkFOQ0VfRiArIFNFWF9GICsgSU1NVU5PX1lOICsgQ0hFTU9fWU4gKyBSQUNFX0YKYGBgCgojIFByZWRpY3Rpb24gTG9naXN0aWMgUmVncmVzc2lvbiBNb2RlbHMKCiMjIFN1cmdlcnkKYGBge3J9Cgpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKFNVUkdFUllfWU4gIT0gIlVrbiIpICU+JSAKICBkcm9wbGV2ZWxzKCkgJT4lIAogIG11dGF0ZShTVVJHRVJZX1lOID0gYXMubG9naWNhbChTVVJHRVJZX1lOKSkKCmZpdF9zdXJnIDwtIGdsbShTVVJHX1RGIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBub19Va25zKQoKc3VtbWFyeShmaXRfc3VyZykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9zdXJnKSwgY29uZmludC5kZWZhdWx0KGZpdF9zdXJnLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBDaGVtbwpgYGB7cn0Kbm9fVWtucyA8LSBkYXRhICU+JQogIGZpbHRlcihDSEVNT19ZTiAhPSAiVWtuIikgJT4lIAogIGRyb3BsZXZlbHMoKSAlPiUgCiAgbXV0YXRlKENIRU1PX1lOID0gZmN0X3JlY29kZShDSEVNT19ZTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIiA9ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIgPSAiWWVzIikpICU+JSAKICBtdXRhdGUoQ0hFTU9fWU4gPSBhcy5pbnRlZ2VyKENIRU1PX1lOKSkgJT4lIAogIG11dGF0ZShDSEVNT19ZTiA9IENIRU1PX1lOIC0gMSkKCmZpdF9jaGVtbyA8LSBnbG0oQ0hFTU9fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgpzdW1tYXJ5KGZpdF9jaGVtbykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9jaGVtbyksIGNvbmZpbnQuZGVmYXVsdChmaXRfY2hlbW8sIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIFJhZGlhdGlvbgpgYGB7cn0Kbm9fVWtucyA8LSBkYXRhICU+JQogIGZpbHRlcihSQURJQVRJT05fWU4gIT0gIlVrbiIpICU+JQogIGRyb3BsZXZlbHMoKSAlPiUKICBtdXRhdGUoUkFESUFUSU9OX1lOID0gZmN0X3JlY29kZShSQURJQVRJT05fWU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIgPSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiID0gIlllcyIpKSU+JSAKICBtdXRhdGUoUkFESUFUSU9OX1lOID0gYXMuaW50ZWdlcihSQURJQVRJT05fWU4pKSAlPiUgCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IFJBRElBVElPTl9ZTiAtIDEpCgoKZml0X3JhZHMgPC0gZ2xtKFJBRElBVElPTl9ZTiB+IEFHRV9GICsgUFJJTUFSWV9TSVRFICsgR1JBREVfRiArIFNFWF9GICsgUkFDRV9GICsgSU5TVVJBTkNFX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GICsgRVhQTl9HUk9VUCArIFlFQVJfT0ZfRElBR05PU0lTLAogICBkYXRhID0gbm9fVWtucykKCgpzdW1tYXJ5KGZpdF9yYWRzKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X3JhZHMpLCBjb25maW50LmRlZmF1bHQoZml0X3JhZHMsIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIEltbXVub3RoZXJhcHkKYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoSU1NVU5PX1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkgJT4lCiAgbXV0YXRlKElNTVVOT19ZTiA9IGZjdF9yZWNvZGUoSU1NVU5PX1lOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAiID0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIiA9ICJZZXMiKSklPiUgCiAgbXV0YXRlKElNTVVOT19ZTiA9IGFzLmludGVnZXIoSU1NVU5PX1lOKSkgJT4lIAogIG11dGF0ZShJTU1VTk9fWU4gPSBJTU1VTk9fWU4gLSAxKQoKCmZpdF9pbW11bm8gPC0gZ2xtKElNTVVOT19ZTiB+IEFHRV9GICsgUFJJTUFSWV9TSVRFICsgR1JBREVfRiArIFNFWF9GICsgUkFDRV9GICsgSU5TVVJBTkNFX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GICsgRVhQTl9HUk9VUCArIFlFQVJfT0ZfRElBR05PU0lTLAogICBkYXRhID0gbm9fVWtucykKCgpzdW1tYXJ5KGZpdF9pbW11bm8pCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfaW1tdW5vKSwgY29uZmludC5kZWZhdWx0KGZpdF9pbW11bm8sIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIEFueSBUcmVhdG1lbnQKYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoVHhfWU4gIT0gIlVrbiIpICU+JQogIGRyb3BsZXZlbHMoKQoKCmZpdF90eCA8LSBnbG0oVHhfWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfdHgpCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfcmFkcyksIGNvbmZpbnQuZGVmYXVsdChmaXRfdHgsIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIE1ldGFzdGFzaXMgYXQgVGltZSBvZiBEaWFnbm9zaXMKYGBge3J9CgpmaXRfbWV0cyA8LSBnbG0obWV0c19hdF9keF9GIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShmaXRfbWV0cykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9tZXRzKSwgY29uZmludC5kZWZhdWx0KGZpdF9tZXRzLCBsZXZlbCA9IDAuOTUpKSkKYGBg